如何使用jQuery销毁DOM元素?


Answers:


194

$target.remove();你在找什么?

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


75
当然,这只会将其从可见文档中删除。如果还有其他从JavaScript对该节点的引用,例如$ target变量本身,则该对象将暂时转出垃圾回收器。如果要销毁它,则还必须丢失对其的所有引用。我不太确定为什么您要破坏DOM元素。也许您只是讨厌$ target。$ target差,它对您有什么作用?
bobince

52
当他一个人时,$ target会很友善,但是当他和100.000个克隆的朋友在一起时,他会变得讨厌。
塞巴斯蒂安·格里戈诺利

2
.empty()产生类似的效果?
萨拉·南达

3
@SaurabhNanda -Empty将删除对象的内容,但不会删除(或销毁)对象本身。
路加福音

46

如果要完全摧毁目标,则有两种选择。首先,您可以如上所述从DOM中删除对象...

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

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

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

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

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

更多阅读:关于空jQuery对象信息,并且信息关于删除


3
为什么delete $target不起作用:perfectionkills.com/understanding-delete/#misconceptions 为什么$target=null不起作用?
LeeGee 2013年

@LeeGee-您能否总结一下您的帖子,以解释为什么删除不适用于jQuery对象?当我们最后查看console.log($ target)时,为什么它似乎起作用?谢谢。
路加福音

我无法比引用的文章更好地解释它,我发现它非常详细。
LeeGee 2013年

作为记录,这在控制台中有效,因为控制台在eval范围内评估JS,这允许删除。“自然”作用域中的变量将不可删除。使用$target=null代替。它速度更快,并且不会干扰内部浏览器的优化。
特曼2014年

1
删除就可以了。这只是意味着JS引擎不会优化该块。在大多数情况下,这是完全不相关的。当出现问题时,您将寻找使用Delete的方法。没过
查理·马丁

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.