Es ist nicht garantiert, dass der von Ihnen vorgeschlagene Ansatz Ihnen das gewünschte Ergebnis liefert - was wäre, wenn Sie tbodybeispielsweise Folgendes hätten :
<table id="myTable">
<tbody>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
Sie würden mit dem folgenden enden:
<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 aufnehmen, solange es sich um gültiges HTML handelt, einschließlich mehrerer Zeilen gemäß dem obigen Beispiel.
Update: Überprüfung dieser Antwort nach den letzten Aktivitäten mit dieser Frage. Augenlidlosigkeit macht einen guten Kommentar, dass es immer eine tbodyim DOM geben wird; Dies ist wahr, aber nur, wenn mindestens eine Zeile vorhanden ist. Wenn Sie keine Zeilen haben, gibt es keine, es sei tbodydenn, Sie haben selbst eine angegeben.
DaRKoN_ schlägt vor , an den tbodyInhalt anzuhängen , anstatt ihn nach dem letzten hinzuzufügen tr. Dies umgeht das Problem, keine Zeilen zu haben, ist aber immer noch nicht kugelsicher, da Sie theoretisch mehrere tbodyElemente haben könnten und die Zeile zu jedem von ihnen hinzugefügt würde.
Ich bin mir nicht sicher, ob es eine einzige einzeilige Lösung gibt, die jedes einzelne mögliche Szenario berücksichtigt. Sie müssen sicherstellen, dass der jQuery-Code mit Ihrem Markup übereinstimmt.
Ich denke, die sicherste Lösung besteht wahrscheinlich darin, sicherzustellen, dass Sie tableimmer mindestens eine tbodyin Ihr Markup aufnehmen, auch wenn es keine Zeilen enthält. Auf dieser Basis können Sie Folgendes verwenden, das funktioniert, egal wie viele Zeilen Sie haben (und auch mehrere tbodyElemente berücksichtigen ):
$('#myTable > tbody:last-child').append('<tr>...</tr><tr>...</tr>');