说,我有一个元素作为<img id="foo" />
并附加了一些事件,例如click
(不是内联onclick
!)。
// somewhere i wrote
foo.addEventListener("click", clickHandler, false);
...
// somewhere i will write
foo.parentNode.removeChild(foo);
我是否也需要删除所有事件?
说,我有一个元素作为<img id="foo" />
并附加了一些事件,例如click
(不是内联onclick
!)。
// somewhere i wrote
foo.addEventListener("click", clickHandler, false);
...
// somewhere i will write
foo.parentNode.removeChild(foo);
我是否也需要删除所有事件?
jQueryempty()
方法的文档说:
为了避免内存泄漏,jQuery 在删除元素本身之前从子元素中删除其他构造,例如数据和事件处理程序。
所以:1)如果我们没有显式删除事件处理程序,我们会得到内存泄漏,2)通过使用empty()
,我们可以避免这种内存泄漏。
另请参阅此do-events-handlers-on-a-dom-node-get-deleted-with-the-node
从 DOM 中移除元素不会(或不应该)移除它的任何监听器;毕竟,您很可能只是在重新排列 DOM 元素的过程中,因此您不想丢弃任何侦听器。
您可以在之前或之后删除侦听器,这应该没有任何区别。
如果您的计划是删除元素并且不再使用它们,那么继续删除事件以避免任何内存泄漏的可能性是明智的。