<p>I'm using jQuery to add an additional row to a table as the last row.</p>
<p>I have done it this way:</p>
<pre><code>$('#myTable').append('&lt;tr&gt;&lt;td&gt;my data&lt;/td&gt;&lt;td&gt;more data&lt;/td&gt;&lt;/tr&gt;');
</code></pre>
<p>Are there limitations to what you can add to a table like this (such as inputs, selects, number of rows)? Is there a different way to do it?</p>

The approach you suggest is not guaranteed to give you the result you're looking for - what if you had a
```
tbody
```
for example:
```
```
<table id="myTable">
  <tbody>
    <tr>...</tr>
    <tr>...</tr>
  </tbody>
</table>
```
```
You would end up with the following:
```
```
<table id="myTable">
  <tbody>
    <tr>...</tr>
    <tr>...</tr>
  </tbody>
  <tr>...</tr>
</table>
```
```
I would therefore recommend this approach instead:
```
```
$('#myTable tr:last').after('<tr>...</tr><tr>...</tr>');
```
```
You can include anything within the
```
after()
```
method as long as it's valid HTML, including multiple rows as per the example above.
Update:
Revisiting this answer following recent activity with this question. eyelidlessness makes a good comment that there will always be a
```
tbody
```
in the DOM; this is true, but only if there is at least one row. If you have no rows, there will be no
```
tbody
```
unless you have specified one yourself.
DaRKoN_
suggests
appending to the
```
tbody
```
rather than adding content after the last
```
tr
```
. This gets around the issue of having no rows, but still isn't bulletproof as you could theoretically have multiple
```
tbody
```
elements and the row would get added to each of them.
Weighing everything up, I'm not sure there is a single one-line solution that accounts for every single possible scenario. You will need to make sure the jQuery code tallies with your markup.
I think the safest solution is probably to ensure your
```
table
```
always includes at least one
```
tbody
```
in your markup, even if it has no rows. On this basis, you can use the following which will work however many rows you have (and also account for multiple
```
tbody
```
elements):
```
```
$('#myTable > tbody:last-child').append('<tr>...</tr><tr>...</tr>');
```
```