L'approche que vous proposez n'est pas garantie de vous donner le résultat que vous recherchez - et si vous en aviez un tbody
par exemple:
<table id="myTable">
<tbody>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
Vous vous retrouveriez avec ce qui suit:
<table id="myTable">
<tbody>
<tr>...</tr>
<tr>...</tr>
</tbody>
<tr>...</tr>
</table>
Je recommanderais donc plutôt cette approche:
$('#myTable tr:last').after('<tr>...</tr><tr>...</tr>');
Vous pouvez inclure n'importe quoi dans la after()
méthode tant qu'il s'agit d'un code HTML valide, y compris plusieurs lignes selon l'exemple ci-dessus.
Mise à jour: réexamen de cette réponse suite à une activité récente avec cette question. la paupière fait un bon commentaire qu'il y aura toujours un tbody
dans le DOM; c'est vrai, mais seulement s'il y a au moins une ligne. Si vous n'avez pas de lignes, il n'y en aura pastbody
sauf si vous en avez spécifié une vous-même.
DaRKoN_ suggère d' ajouter à latbody
plutôt que d'ajouter du contenu après le dernier tr
. Cela résout le problème de l'absence de lignes, mais n'est toujours pas à l'épreuve des balles car vous pourriez théoriquement en avoir plusieurstbody
éléments et la ligne serait ajoutée à chacun d'eux.
En pesant tout, je ne suis pas sûr qu'il existe une seule solution sur une seule ligne qui tienne compte de chaque scénario possible. Vous devrez vous assurer que le code jQuery correspond à votre balisage.
Je pense que la solution la plus sûre est probablement de s'assurer que vous en table
incluez toujours au moins un tbody
dans votre balisage, même s'il n'a pas de lignes. Sur cette base, vous pouvez utiliser les éléments suivants, qui fonctionneront autant de lignes que vous avez (et tiennent également compte de plusieurs tbody
éléments):
$('#myTable > tbody:last-child').append('<tr>...</tr><tr>...</tr>');