如果一个HTML元素有监听器,在该元素从DOM中移除后,监听器会发生什么?

5

正如标题所述,如果我有一个与HTML元素绑定的jQuery监听器,并且然后使用jQuery从DOM中删除了HTML元素,会发生什么?

<div id="eventDiv> ... </div>


$('#eventDiv').click(function() {
    // event handling code here
 });

那么当我这样做时,监听器会发生什么?
 $('#eventDiv').remove();

此外,如果您不使用jQuery而使用document.removeChild()会发生什么?
1个回答

3
如果你查看jQuery源代码remove()会调用一个名为cleanData的函数,该函数又调用jQuery.event.removejQuery.removeEvent(这似乎是一个内部函数)。这些方法最终会调用unbind(),以删除你正在删除的DOM元素的任何事件监听器。

那么,document.removeChild会清除任何监听器吗? - stevebot
1
@stevebot MDC 表示,被移除的元素仍然留存在内存中(您可以获得对已移除元素的引用)。最终它可能会被垃圾回收(只是猜测),这可能会或可能不会删除侦听器;您需要查看源代码 :) - Vivin Paliath
谢谢,知道这点很好,因为我在我的应用程序中处理了YUI、prototype、JQuery和纯JavaScript的混合 lol。 - stevebot

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