Jaka jest najlepsza metoda w jQuery, aby dodać dodatkowy wiersz do tabeli jako ostatni wiersz?
Czy to jest dopuszczalne?
$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');
Czy istnieją ograniczenia dotyczące tego, co można dodać do takiej tabeli (takie jak dane wejściowe, selekcje, liczba wierszy)?
javascript
jquery
html-table
Darryl Hein
źródło
źródło
Odpowiedzi:
Podejście, które sugerujesz, nie gwarantuje uzyskania oczekiwanego rezultatu - co jeśli
tbody
na przykład:Skończyłoby się z następującymi:
Dlatego zamiast tego poleciłbym to podejście:
W
after()
metodzie można uwzględnić wszystko, o ile jest to poprawny kod HTML, w tym wiele wierszy zgodnie z powyższym przykładem.Aktualizacja: ponowne sprawdzenie tej odpowiedzi po ostatniej aktywności związanej z tym pytaniem. brak powiek jest dobrym komentarzem, że zawsze będzie
tbody
w DOM; jest to prawda, ale tylko jeśli jest co najmniej jeden wiersz. Jeśli nie masz wierszy, nie będzie,tbody
chyba że sam określisz jeden.DaRKoN_ sugeruje dołączanie do
tbody
treści zamiast dodawania treści po ostatnimtr
. Rozwiązuje to problem braku wierszy, ale nadal nie jest kuloodporny, ponieważ teoretycznie można mieć wieletbody
elementów, a wiersz zostanie dodany do każdego z nich.Biorąc pod uwagę wszystko, nie jestem pewien, czy istnieje jedno jednowierszowe rozwiązanie, które uwzględnia każdy możliwy scenariusz. Musisz upewnić się, że kod jQuery zgadza się ze znacznikami.
Myślę, że najbezpieczniejszym rozwiązaniem jest zapewnienie, aby
table
zawsze zawierałeś przynajmniej jedentbody
ze znaczników, nawet jeśli nie ma żadnych wierszy. Na tej podstawie możesz użyć następujących opcji, które będą działać bez względu na liczbę posiadanych wierszy (a także uwzględniać wieletbody
elementów):źródło
$('#myTable').find('tbody:last')
zamiast$('#myTable > tbody:last')
.jQuery ma wbudowane narzędzie do manipulowania elementami DOM w locie.
Możesz dodać wszystko do swojego stołu w następujący sposób:
$('<some-tag>')
Rzeczą w jQuery jest obiekt tag, który może mieć kilkaattr
atrybutów, które można ustawiać i uzyskać, a takżetext
, co stanowi tekst pomiędzy znacznikiem tutaj:<tag>text</tag>
.To trochę dziwne wcięcie, ale łatwiej jest zobaczyć, co się dzieje w tym przykładzie.
źródło
Więc rzeczy się zmieniły od czasu @Luke Bennett odpowiedział na to pytanie. Oto aktualizacja.
jQuery od wersji 1.4 (?) automatycznie wykrywa, czy element próbujesz wstawić (za pomocą dowolnego z
append()
,prepend()
,before()
lubafter()
metod) jest<tr>
i wstawia go do pierwszego<tbody>
w tabeli lub zawija je w nowy<tbody>
, jeśli nie istnieć.Więc tak, twój przykładowy kod jest akceptowalny i będzie działał dobrze z jQuery 1.4+. ;)
źródło
yourString.trim()
można temu zaradzić.Co jeśli masz A
<tbody>
i A<tfoot>
?Jak na przykład:
Następnie wstawiłby nowy wiersz w stopce - nie do ciała.
Dlatego najlepszym rozwiązaniem jest dodanie
<tbody>
tagu i użycie.append
, a nie.after
.źródło
Wiem, że poprosiłeś o metodę jQuery. Szukałem dużo i stwierdziłem, że możemy to zrobić lepiej niż przy użyciu JavaScript bezpośrednio przez następującą funkcję.
index
jest liczbą całkowitą, która określa pozycję wiersza do wstawienia (zaczyna się od 0). Można również użyć wartości -1; co powoduje, że nowy wiersz zostanie wstawiony w ostatniej pozycji.Ten parametr jest wymagany w Firefox i Opera , ale jest opcjonalny w Internet Explorer, Chrome i Safari .
Jeśli ten parametr zostanie pominięty,
insertRow()
wstawia nowy wiersz na ostatniej pozycji w Internet Explorerze i na pierwszej pozycji w Chrome i Safari.Będzie działać dla każdej akceptowalnej struktury tabeli HTML.
Poniższy przykład wstawi wiersz na końcu (-1 służy jako indeks):
Mam nadzieję, że to pomoże.
źródło
polecam
w przeciwieństwie do
first
Ilast
słowa kluczowe prace na pierwszej lub ostatniej tagu być uruchomiony, nie zamknięta. Dlatego gra się lepiej z tabelami zagnieżdżonymi, jeśli nie chcesz, aby tabela zagnieżdżona była zmieniana, ale zamiast tego dodaj do tabeli ogólnej. Przynajmniej to znalazłem.źródło
Moim zdaniem najszybszy i wyraźniejszy sposób
oto demo Fiddle
Mogę również polecić małą funkcję, aby wprowadzić więcej zmian HTML
Jeśli używasz mojego kompozytora strun, możesz to zrobić w podobny sposób
Oto demo Fiddle
źródło
tbody
, możesz uzyskać wiele wkładek$("SELECTOR").last()
ograniczyć kolekcję tagówMożna to łatwo zrobić za pomocą funkcji „last ()” jQuery.
źródło
Używam tego sposobu, gdy nie ma żadnego wiersza w tabeli, a także każdy wiersz jest dość skomplikowany.
style.css:
xxx.html
źródło
Aby znaleźć najlepsze rozwiązanie zamieszczone tutaj, jeśli w ostatnim wierszu znajduje się tabela zagnieżdżona, nowy wiersz zostanie dodany do tabeli zagnieżdżonej zamiast tabeli głównej. Szybkie rozwiązanie (biorąc pod uwagę tabele z / bez tbody i tabele z tabelami zagnieżdżonymi):
Przykład użycia:
źródło
Rozwiązałem to w ten sposób.
Korzystanie z jquery
Skrawek
źródło
Miałem pewne powiązane problemy, próbując wstawić wiersz tabeli po klikniętym wierszu. Wszystko jest w porządku, z wyjątkiem tego, że wywołanie .after () nie działa dla ostatniego rzędu.
Wylądowałem z bardzo niechlujnym rozwiązaniem:
utwórz tabelę w następujący sposób (identyfikator dla każdego wiersza):
itp ...
i wtedy :
źródło
Możesz użyć tej wspaniałej funkcji dodawania wiersza tabeli jQuery . Działa świetnie z tabelami, które mają,
<tbody>
a które nie. Uwzględnia również rozpiętość kolorów ostatniego wiersza tabeli.Oto przykładowe użycie:
źródło
Moje rozwiązanie:
stosowanie:
źródło
tbody
w tabeli ..? oznacza, że wiersz może znajdować się bezpośrednio w<table>
elemencie, nawet bez nagłówka.źródło
Odpowiedź Neila jest zdecydowanie najlepsza. Jednak sprawy stają się naprawdę nieuporządkowane. Moją sugestią byłoby użycie zmiennych do przechowywania elementów i dołączenie ich do hierarchii DOM.
HTML
JAVASCRIPT
źródło
Pisz za pomocą funkcji javascript
źródło
Uważam, że ta wtyczka AddRow jest bardzo przydatna do zarządzania wierszami tabeli. Jednak rozwiązanie Luke'a byłoby najlepiej dopasowane, jeśli po prostu chcesz dodać nowy wiersz.
źródło
Oto kod hacketi hacketi. Chciałem zachować szablon wiersza na stronie HTML . Wiersze tabeli 0 ... n są renderowane w czasie żądania, a ten przykład ma jeden wiersz zakodowany na stałe i wiersz uproszczonego szablonu. Tabela szablonów jest ukryta, a znacznik wiersza musi znajdować się w prawidłowej tabeli, w przeciwnym razie przeglądarki mogą upuścić ją z drzewa DOM . Dodanie wiersza używa licznika + 1, a bieżąca wartość jest zachowywana w atrybucie danych. Gwarantuje, że każdy wiersz otrzymuje unikalne parametry adresu URL .
Przeprowadziłem testy na przeglądarkach Internet Explorer 8, Internet Explorer 9, Firefox, Chrome, Opera, Nokia Lumia 800 , Nokia C7 (z Symbian 3), Android i Firefox beta.
PS: Wszystkie kredyty udzielam zespołowi jQuery; zasługują na wszystko. Programowanie JavaScript bez jQuery - nawet nie chcę myśleć o tym koszmarze.
źródło
źródło
Chyba zrobiłem to w moim projekcie, oto on:
HTML
js
źródło
To jest moje rozwiązanie
źródło
jeśli masz inną zmienną, możesz uzyskać dostęp w
<td>
znaczniku takim jak ta próba.W ten sposób mam nadzieję, że byłoby to pomocne
źródło
Ponieważ mam również sposób, aby w końcu dodać wiersz lub dowolne określone miejsce, więc myślę, że powinienem również udostępnić to:
Najpierw sprawdź długość lub rzędy:
a następnie użyj poniższego kodu, aby dodać swój wiersz:
źródło
Aby dodać dobry przykład na ten temat, oto działające rozwiązanie, jeśli chcesz dodać wiersz w określonej pozycji.
Dodatkowy wiersz jest dodawany po 5. rzędzie lub na końcu tabeli, jeśli jest mniej niż 5 wierszy.
Umieszczam zawartość w gotowym (ukrytym) pojemniku pod tabelą. Więc jeśli ty (lub projektant) musisz zmienić, nie jest wymagana edycja JS.
źródło
Możesz buforować zmienną stopki i ograniczyć dostęp do DOM (uwaga: być może lepiej będzie użyć fałszywego wiersza zamiast stopki).
źródło
doda nowy wiersz do pierwszego
TBODY
w tabeli, bez względu na dowolnyTHEAD
lubTFOOT
obecny. (Nie znalazłem informacji, z której wersji jQuery.append()
takie zachowanie jest obecne).Możesz spróbować w tych przykładach:
W którym przykładzie
a b
wiersz jest wstawiany po1 2
, a nie3 4
w drugim przykładzie. Jeśli tabela była pusta, jQuery tworzyTBODY
nowy wiersz.źródło
Jeśli używasz wtyczki JQuery Datatable, możesz spróbować.
Patrz Datatables fnAddData Datatables API
źródło
W prosty sposób:
źródło
Spróbuj tego: bardzo prosty sposób
źródło