为什么jQuery无法删除这个元素?

时间:2010-03-13 00:37:32

标签: jquery html-table row

我有一张这样的表:

<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());

产生“数据库中没有项目。”如预期的那样。

7 个答案:

答案 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)不要添加和删除内容,而是显示和隐藏它。

以任意方式动态更改页面内容不会有助于维护,因此我希望您在某些方面做得很好,并且有良好的文档记录。想想当你被公共汽车撞到或赢得彩票时必须接管的可怜的草皮。