Der von Ihnen vorgeschlagene Ansatz führt garantiert nicht zum gewünschten Ergebnis - was wäre, wenn Sie eine tbody
zum Beispiel:
<table id="myTable">
<tbody>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
Das Ergebnis wäre wie folgt:
<table id="myTable">
<tbody>
<tr>...</tr>
<tr>...</tr>
</tbody>
<tr>...</tr>
</table>
Ich würde daher stattdessen diesen Ansatz empfehlen:
$('#myTable tr:last').after('<tr>...</tr><tr>...</tr>');
Sie können alles in die after()
Methode, solange es sich um gültiges HTML handelt, einschließlich mehrerer Zeilen wie im obigen Beispiel.
Aktualisierung: Ich überprüfe diese Antwort nach den jüngsten Aktivitäten zu dieser Frage. tbody
im DOM; dies ist wahr, aber nur, wenn es mindestens eine Zeile gibt. Wenn Sie keine Zeilen haben, gibt es keine tbody
es sei denn, Sie haben selbst eine angegeben.
DaRKoN_ schlägt vor die an den tbody
anstatt den Inhalt nach der letzten tr
. Dies umgeht das Problem, dass es keine Zeilen gibt, ist aber immer noch nicht kugelsicher, da man theoretisch mehrere Zeilen haben könnte. tbody
Elemente und die Zeile würde zu jedem von ihnen hinzugefügt werden.
Wenn man alles abwägt, bin ich mir nicht sicher, ob es eine einzige einzeilige Lösung gibt, die alle möglichen Szenarien berücksichtigt. Sie müssen sicherstellen, dass der jQuery-Code mit Ihrem Markup übereinstimmt.
Ich denke, die sicherste Lösung ist wahrscheinlich, dass Ihre table
enthält immer mindestens einen tbody
in Ihrem Markup, auch wenn es keine Zeilen hat. Auf dieser Grundlage können Sie die folgende Formel verwenden, die unabhängig von der Anzahl der Zeilen funktioniert (und auch für mehrere tbody
Elemente):
$('#myTable > tbody:last-child').append('<tr>...</tr><tr>...</tr>');
4 Stimmen
Vielen Dank, Ash. Ich bin auch gerade lernen jQuery und finden es schwer, herauszufinden, den besten Weg, vor allem einfache Dinge. Der Grund, warum sie als 2 Fragen sind, ist, weil ich eine gepostet und dann fast eine Stunde später erkannte ich, dass ich die andere in gesetzt haben sollte und dachte nicht, ich sollte die erste ändern.
33 Stimmen
Aus diesem Grund: google.com/search?q=jquery+add+table+row
19 Stimmen
FYI - Vermeiden Sie die Verwendung mehrerer Anhänge (verlangsamt die Leistung enorm), sondern bauen Sie Ihre Zeichenfolge oder verwenden Sie JavaScript join, die viel schneller ist.
1 Stimmen
Siehe: stackoverflow.com/a/50365764/7186739
2 Stimmen
Nur für den Fall, dass die Zeile zu komplex ist, was ich tue, ist, halten Sie die erste Zeile mit der erforderlichen Struktur versteckt, machen Sie einen Klon und ändern Sie den Text und fügen Sie nach der ersten Zeile, auf diese Weise, wenn Sie Daten aus Ajax-Antwort holen Ihre Tabelle erstellt werden, erinnern Sie sich Klon es außerhalb der Schleife, dann verwenden Sie es, um den Inhalt innerhalb der Schleife zu ändern. $("#mainTable tbody").append(row); row ist die modifizierte Kopie des Klons :)