问题

jQuery中最好的方法是在表格中添加一行作为最后一行?

这是否可以接受?

$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');

您可以向此类表格添加的内容有限制(例如输入,选择,行数)?



解决方法

您建议的方法无法保证为您提供所需的结果 - 如果您有 tbody ,例如:

<table id="myTable">
  <tbody>
    <tr>...</tr>
    <tr>...</tr>
  </tbody>
</table>

您最终会得到以下结果:

<table id="myTable">
  <tbody>
    <tr>...</tr>
    <tr>...</tr>
  </tbody>
  <tr>...</tr>
</table>

因此,我建议改用这种方法:

$('#myTable tr:last').after('<tr>...</tr><tr>...</tr>');

您可以在 after()方法中包含任何内容,只要它是有效的HTML,包括上面示例的多行即可.

更新:在此问题的最近活动后重新访问此答案. eyelidlessness一个好的评论,在DOM中总是有一个 tbody ;这是真的,但只有当至少有一行.如果没有行,则不会有 tbody ,除非您自己指定.

DaRKoN_ 建议附加到 tbody 而不是在最后一个 tr 之后添加内容.这解决了没有行的问题,但仍然不是防弹的,因为理论上可以有多个 tbody 元素,并且该行将被添加到每个元素.

称重一切,我不确定是否有一个单一的解决方案,解决每一个可能的情况.您需要确保jQuery代码与您的标记一致.

我认为最安全的解决方案可能是确保您的在标记中始终至少包含一个 tbody ,即使它没有行.在这个基础上,你可以使用下面的方法,你将有很多行(并且也代表多个 tbody 元素):

$('#myTable > tbody:last-child').append('<tr>...</tr><tr>...</tr>');



相关问题推荐