如何使用 jQuery 销毁 DOM 元素?

Posted

技术标签:

【中文标题】如何使用 jQuery 销毁 DOM 元素?【英文标题】:How to destroy a DOM element with jQuery? 【发布时间】:2010-11-26 09:09:12 【问题描述】:

假设 jQuery 对象是$target

【问题讨论】:

【参考方案1】:

$target.remove(); 是你要找的吗?

https://api.jquery.com/remove/

【讨论】:

当然这只是将它从可见文档中删除。如果 javascript 中有其他对节点的引用,例如 $target 变量本身,则该对象将暂时逃离垃圾收集器。如果您想销毁它,您还必须丢失对它的所有引用。不过,我不太确定您为什么要销毁 DOM 元素。也许你只是讨厌 $target。可怜的 $target,它对你做了什么? $target 一个人的时候很善良,但是当他和他的 100,000 个克隆朋友在一起时他会变得很讨厌。 .empty()会有类似的效果吗? @SaurabhNanda - Empty 将删除对象的内容,但不会删除(或销毁)对象本身。【参考方案2】:

如果你想完全摧毁目标,你有几个选择。首先,您可以如上所述从 DOM 中删除对象...

console.log($target);   // jQuery object
$target.remove();       // remove target from the DOM
console.log($target);   // $target still exists

选项 1 - 然后将 target 替换为 空 jQuery 对象 (jQuery 1.4+)

$target = $();
console.log($target);   // empty jQuery object

选项 2 - 或完全删除该属性(如果您在其他地方引用它会导致错误)

delete $target;
console.log($target);   // error: $target is not defined

更多阅读:info about empty jQuery object和info about delete

【讨论】:

为什么delete $target 不起作用:perfectionkills.com/understanding-delete/#misconceptions 为什么$target=null 不起作用? @LeeGee - 您能否总结一下您的帖子以解释为什么删除不适用于 jQuery 对象?为什么当我们最后查看 console.log($target) 时它似乎有效?谢谢。 我无法比引用的文章更好地解释它,我发现它非常详细。 作为记录,这在控制台中有效,因为控制台在 eval 范围内评估 JS,它允许删除。 “自然”范围内的变量将不可删除。请改用$target=null。它速度更快,并且不会干扰内部浏览器优化。 删除没问题。这只是意味着该块不会被 JS 引擎优化。在大多数情况下,这完全无关紧要。当它成为问题时,您会寻找使用删除的方法。以前没有。【参考方案3】:

您正在寻找.remove() 函数。

http://docs.jquery.com/Manipulation/remove

【讨论】:

【参考方案4】:

不确定是不是只有我一个人,但如果您按 id 选择,使用 .remove() 似乎不起作用。

例如:$("#my-element").remove();

我不得不改用元素的类,否则什么都没有发生。

例如:$(".my-element").remove();

【讨论】:

以上是关于如何使用 jQuery 销毁 DOM 元素?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ThemeProvider 时,我们如何在同一个 DOM 元素上使用两个主题?

销毁父组件时,UIkit 模态元素不会从 DOM 中删除(Vue.js)

角度 5 - 如何从 dom 中删除动态添加的组件

如何使自定义子命令自动重试

dojo:通过 dom 节点销毁所有小部件

如何在悬停时获得实际的 DOM CSS 宽度? [复制]