我有一张这样的表:
<table id='inventory_table'>
<tr id='no_items_avail'>
<td>
There are no items in the database.
</td>
</tr>
</table>
我想用这样的jQuery摆脱它:
$('#inventory_table tbody tr#no_items_avail').remove();
但它似乎根本没有用。我做错了什么?
编辑:此外,上面的行最初是通过另一个jQuery调用插入到DOM中的:
$('#inventory_table tbody').append("<tr id='no_items_avail'.......
如果有帮助的话。并且,运行:
alert($('#no_items_avail').text());
产生“数据库中没有项目。”如预期的那样。
答案 0 :(得分:5)
您认为您的DOM中可以使用tbody
。只有少数浏览器将tbody
添加到表中(如果它不存在)。尝试
$('#inventory_table tr#no_items_avail').remove();
甚至更好
$('#no_items_avail').remove();
(因为ID无论如何都必须是唯一的。)
答案 1 :(得分:2)
我的猜测是你在同一个文档中多次使用相同的ID?因为这适用于我在IE8(兼容模式),FF和Chrome。
当然,它并不需要那么复杂,因为它完美地运作:
$("#no_items_avail").remove();
请记住,ID必须是唯一的,并且复制它们是这类事情失败的常见原因。
答案 2 :(得分:1)
您的选择器不必要大。这个更短,它的工作原理: $( '#no_items_avail')除去();
另外,请确保没有其他元素具有相同的id
。
答案 3 :(得分:0)
尝试在ids中使用短划线' - '而不是下划线。我相信有些浏览器对下划线反应不佳。也许我正在考虑使用CSS而不是JS,但尝试一下它的价值。
答案 4 :(得分:0)
你的选择器引用一个不存在的tbody:
$('#inventory_table tbody tr#no_items_avail').remove();
删除'tbody',它应该有效:
$('#inventory_table tr#no_items_avail').remove();
或者,只需引用tr ID本身:
$('#no_items_avail').remove();
答案 5 :(得分:0)
表格中没有<tbody>
标记。 jQuery选择在找不到之后“停止”。
答案 6 :(得分:-2)
1)不要使用ID来识别jQuery,使用类或可能基于路径的选择。 2)不要添加和删除内容,而是显示和隐藏它。
以任意方式动态更改页面内容不会有助于维护,因此我希望您在某些方面做得很好,并且有良好的文档记录。想想当你被公共汽车撞到或赢得彩票时必须接管的可怜的草皮。