Dodaj vrstico tabele v jQueryju
Katera je najboljša metoda v jQueryju za dodajanje dodatne vrstice v tabelo kot zadnjo vrstico?
Ali je to sprejemljivo?
$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');
Ali obstajajo omejitve glede tega, kaj lahko dodate v takšno tabelo (kot so vhodi, izbire, število vrstic)?
2320
3
Pristop, ki ga predlagate, vam ne bo zagotovil želenega rezultata - kaj če bi imeli na primer
telo
:Na koncu bi dobili naslednje:
Zato priporočam ta pristop:
V metodo
after()
lahko vključite karkoli, če je to veljaven HTML, vključno z več vrsticami, kot v zgornjem primeru.Popravek: Ponovni pregled tega odgovora po nedavni dejavnosti v zvezi s tem vprašanjem. eyelidlessness ima dobro pripombo, da bo v DOM vedno
tbody
; to je res, vendar le, če obstaja vsaj ena vrstica. Če nimate nobene vrstice, ne bo nobenegatbodyja
, razen če ste ga določili sami.DaRKoN_ predlaga dodajanje v
tbody
namesto dodajanja vsebine za zadnjimtr
. S tem se izognemo problemu, da nimamo vrstic, vendar še vedno ni neprebojno, saj bi teoretično lahko imeli več elementovtbody
in vrstica bi se dodala vsakemu od njih.Če vse skupaj pretehtamo, nisem prepričan, da obstaja rešitev z eno samo vrstico, ki bi upoštevala vse možne scenarije. Prepričati se morate, da je koda jQueryja usklajena z vašo oznako.
Mislim, da je najvarnejša rešitev, če zagotovite, da vaša
tabela
vedno vključuje vsaj enotelo
v vaši oznaki, tudi če nima vrstic. Na podlagi tega lahko uporabite naslednjo rešitev, ki bo delovala ne glede na število vrstic (in bo upoštevala tudi več elementovtbody
):Kaj če bi imeli
<tbody>
in<tfoot>
?Na primer:
Potem bi vstavil vašo novo vrstico v nogo - ne v telo.
Zato je najboljša rešitev vključitev oznake
<tbody>
in uporaba.append
namesto.after
.Uporabite lahko to odlično funkcijo jQuery add table row. Odlično deluje pri tabelah, ki imajo
<tbody>
, in tistih, ki nimajo<tbody>
. Upošteva tudi colspan zadnje vrstice tabele.Tukaj je primer uporabe: