Vairāk
Pievienot tabulas rindu jQuery
Kāda ir labākā jQuery metode, lai tabulai pievienotu papildu rindu kā pēdējo rindu?
Vai tas ir pieņemami?
$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');
Vai ir kādi ierobežojumi attiecībā uz to, ko var pievienot šādai tabulai (piemēram, ievadi, atlases, rindu skaits)?
2320
3
Jūsu ieteiktā pieeja negarantē rezultātu, ko jūs meklējat, piemēram, ja jums būtu
tbody
:Rezultāts būtu šāds:
Tāpēc es ieteiktu šo pieeju:
Metodē
after()
var iekļaut jebko, ja vien tas ir derīgs HTML, tostarp vairākas rindas, kā norādīts iepriekš minētajā piemērā.Atjauninājums: Pārskatām šo atbildi, ņemot vērā neseno aktivitāti saistībā ar šo jautājumu. eyelidlessness ir labs komentārs, ka DOM vienmēr būs
tbody
; tā ir taisnība, bet tikai tad, ja ir vismaz viena rinda. Ja rindu nav, tadtbody
nebūs, ja vien jūs pats to nebūsiet norādījis.DaRKoN_ ierosina pievienot
tbody
, nevis pievienot saturu pēc pēdējāstr
. Tas atrisina rindiņu neesamības problēmu, bet joprojām nav necaurlaidīgs, jo teorētiski var būt vairākitbody
elementi, un rinda tiks pievienota katram no tiem.Apsverot visu, es neesmu pārliecināts, ka ir viens vienīgs vienas rindas risinājums, kas ņemtu vērā visus iespējamos scenārijus. Jums būs jāpārliecinās, ka jQuery kods atbilst jūsu marķējumam.
Manuprāt, visdrošākais risinājums, iespējams, ir nodrošināt, lai jūsu
table
vienmēr ietvertu vismaz vienutbody
, pat ja tajā nav rindu. Pamatojoties uz to, varat izmantot šādu formulējumu, kas darbosies neatkarīgi no tā, cik rindu jums ir (un ņems vērā arī vairākustbody
elementus):Ko darīt, ja jums būtu
<tbody>
un<tfoot>
?Piemēram:
Tad tas ievietos jūsu jauno rindu pēdiņā, nevis korpusā.
Tāpēc labākais risinājums ir iekļaut
<tbody>
tagu un izmantot.append
, nevis.after
.Jūs varat izmantot šo lielisko jQuery pievienot tabulas rindu funkciju. Tā lieliski darbojas gan ar tabulām, kurām ir
<tbody>
, gan ar tabulām, kurām nav. Turklāt tā ņem vērā jūsu pēdējās tabulas rindas colspan.Šeit ir lietošanas piemērs: