如果我将一个JavaScript事件绑定到一个元素,然后删除该元素,那么该事件会发生什么?

如果我将一个JavaScript事件绑定到一个元素,然后删除该元素,那么该事件会发生什么?,javascript,jquery,html,dom,javascript-events,Javascript,Jquery,Html,Dom,Javascript Events,假设我有一个元素: <section id="container"> <div id="curious">hey, there</div> </section> 稍后,该元素将被删除: $('#container').html(''); 绑定事件会发生什么情况?它也被删除了吗?它会在周围徘徊吗?清理它是一种好做法吗?根据的jQuery文档,事件处理程序被删除 这样做是为了防止内存泄漏 当使用.html()设置元素的内容时,该元素中的任何

假设我有一个元素:

<section id="container">
    <div id="curious">hey, there</div>
</section>
稍后,该元素将被删除:

$('#container').html('');

绑定事件会发生什么情况?它也被删除了吗?它会在周围徘徊吗?清理它是一种好做法吗?

根据的jQuery文档,事件处理程序被删除

这样做是为了防止内存泄漏

当使用
.html()
设置元素的内容时,该元素中的任何内容都将被新内容完全替换。此外,jQuery在用新内容替换子元素之前,会从子元素中删除其他结构,如数据和事件处理程序

同样,在使用/方法时也同样适用:

与元素关联的所有绑定事件和jQuery数据都将被删除


如果要保留数据和事件侦听器,请改用。
.detach()
方法本质上与
.remove()
方法相同,只是它保留了与被删除元素相关联的所有jQuery数据(这意味着可以在分离相同的元素后附加它,并且事件仍然会被绑定)

好问题。我可以想象,当您在内部执行
.html(“”)
时,js引擎会迭代节点,并将它们与事件处理程序一起删除。如果不是,那么这就是内存泄漏的根源。哎呀@JoshCrozier我猜jQuery已经决定使用“绑定事件”作为简写;编辑的评论。
$('#container').html('');