jQuery如何仅移除动态追加到tbody的tr元素而不删除tbody本身
问题原因
$('#songsTbody').remove()的作用是直接选中id为songsTbody的<tbody>元素本身执行删除,会把tbody节点连同内部所有内容一并移除,自然无法保留tbody本身。
可用操作方法
根据你的实际场景选择对应方案:
- 若tbody内没有其他预置静态内容,只有你动态追加的tr,直接调用
empty()方法清空tbody的所有子节点即可,tbody本身会被保留:
$('#songsTbody').empty();
- 若tbody内本身存在预置的静态tr,只想删除动态追加的行,最稳妥的做法是追加动态行时给tr加专属类名做标记:
// 追加行时给动态tr添加专属标识类 for (var i = 0 ;i < 12 ;i++){ $(`<tr class="dynamic-row"><td>test</td></tr>`).appendTo('#songsTbody'); }
删除时仅选中带该标识类的tr执行删除,不会误伤原有静态内容:
$('#songsTbody tr.dynamic-row').remove();
- 若你不方便修改之前的追加逻辑,且需要清空tbody下所有tr(包含静态和动态的),可以直接选中tbody下的tr元素执行删除:
$('#songsTbody tr').remove();
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

