A abordagem sugerida não garante o resultado que você procura - e se você tivesse uma, tbody
por exemplo:
<table id="myTable">
<tbody>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
Você terminaria com o seguinte:
<table id="myTable">
<tbody>
<tr>...</tr>
<tr>...</tr>
</tbody>
<tr>...</tr>
</table>
Portanto, eu recomendaria essa abordagem:
$('#myTable tr:last').after('<tr>...</tr><tr>...</tr>');
Você pode incluir qualquer coisa dentro do after()
método, desde que seja HTML válido, incluindo várias linhas, conforme o exemplo acima.
Atualização: Revisitando esta resposta após atividades recentes com esta pergunta. eyelidlessness faz um bom comentário que sempre haverá um tbody
no DOM; isso é verdade, mas apenas se houver pelo menos uma linha. Se você não tiver linhas, não haverá, a tbody
menos que você tenha especificado uma.
DaRKoN_ sugere anexar ao tbody
invés de adicionar conteúdo após o último tr
. Isso contorna a questão de não ter linhas, mas ainda não é à prova de balas, pois teoricamente você poderia ter vários tbody
elementos e a linha seria adicionada a cada um deles.
Pesando tudo, não tenho certeza de que exista uma única solução de uma linha que responda a todos os cenários possíveis. Você precisará garantir que o código jQuery corresponda à sua marcação.
Acho que a solução mais segura é garantir que você table
sempre inclua pelo menos uma tbody
na sua marcação, mesmo que não tenha linhas. Nesta base, você pode usar o seguinte, que funcionará no entanto, muitas linhas que você possui (e também conta para vários tbody
elementos):
$('#myTable > tbody:last-child').append('<tr>...</tr><tr>...</tr>');