jQuery ::: remove() 方法真的删除元素吗?

7

我正在尝试使用jQuery删除表格行,虽然它从屏幕上消失了,看起来似乎已经成功了,但是在Firebug中,我仍然可以看到它的代码。这一行中有表单元素,因此,我想知道这一行是否真的被删除了,因为我不希望提交这些值。那么,remove()方法真正地删除了它吗?下面是我正在使用的代码...也许我做错了什么?

if($('.delete')) {
            $(".delete").live('click', function(event) {
                $(this).closest('tr').remove();
            });
        }
5个回答

9

页面的源代码不会随着Javascript函数的更新而更新。如果您使用Firebug检查DOM,您应该能够看到反映出的更改。


我正在Firebug中查看...但是,我仍然可以看到那个特定删除的代码。因此,也许我做法有问题?从我发布的内容中是否有任何明显的问题? - phpN00b
你是在查看 DOM 而不是源代码吗? - cjk
为澄清ck的注释,活动DOM会在Firebug的主窗口中被解析和构建成树形结构,而您在HTML部分或脚本部分看到的代码是最初加载的静态HTML。每当JS对结构进行更改时,您会看到正在更改的区域(以及整个树形结构)上出现黄色高亮显示。 - dclowd9901

1

它彻底从您的DOM中删除元素。我认为您可能正在查看错误的元素,因为如果实际上在屏幕上被移除了,Firebug应该反映出这种变化。

您的代码看起来很好。

.Remove()参考


1

没错。remove()方法不会移除元素。 《jQuery实战》中写道,“需要注意的是,和其他很多jQuery命令一样,该命令将包装集作为结果返回。从DOM中移除的元素仍然由该集合引用(因此还没有资格进行垃圾回收),可以使用其他jQuery命令进一步操作...” 我一直在搜索,似乎没有jQuery实际上可以移除元素的方法。所以我认为你应该使用旧的DOM JavaScript函数来执行它。


0

是的,jQuery的remove()确实从DOM中删除元素。

你的代码可能有问题。


0

是的,它确实可以。

我前几天正在使用它。您可以在Firebug(和其他浏览器调试器)中看到该元素消失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接