javascript - DOM 事件是否会在它们绑定(bind)到的元素消亡后销毁?

标签 javascript events dom

如果我将事件绑定(bind)到 DOM 元素,如果元素被销毁,事件是否会被销毁?通过销毁一个元素,我指的是 removeChild()。使用 appendChild() 将节点移动到另一个位置不会影响事件监听器。

基本上我对此很感兴趣,因为我想知道我是否需要做一些清理/拆除工作。

最佳答案

我想你在这里指的是事件处理程序,对吧?如果是这样,那么出于垃圾收集目的,小心处理通过“onfoo”属性附加到元素的函数是一个有效的关注点。 IE 具有相当于 DOM 和 JavaScript 的独立垃圾收集器,它们彼此了解不多。

我相信当 DOM 元素被扔到一边时,确保将“onfoo”属性设置为 null 就足够了。通过这样做,JavaScript 代码将破坏对为处理程序分配的 JavaScript 内存的引用,因此 DOM 垃圾收集器不会泄漏。当然,这也适用于您可能已添加到 DOM 元素的任何其他随机属性。

虽然我不喜欢建议使用 JavaScript 框架来解决没有如此标记的问题,事实上我不会在这里提出这样的建议,但我会说框架(通常)为你做的事情之一是尝试在这种情况下保持 DOM“干净”。

关于javascript - DOM 事件是否会在它们绑定(bind)到的元素消亡后销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5198364/

相关文章:

javascript - 如何在 For 循环中为多个标记创建信息窗口

javascript - 子 html 元素的 onclick 事件被阻止。如何征服?

c++ - 在 C++ 中确定数据表事件的类型

xml - VBScript - 选择使用自关闭标签的多个 xml 节点

javascript - DOM 和 Virtual DOM 在内存中是如何表示的?

javascript - 无法使用 jQuery 更改 css 背景属性

javascript - Rails 在 html 公共(public)文件中包含 js

javascript - 使用 ReactJS 显示新的列表项 onclick

multithreading - POSIX 的扩展允许 select() 或等效函数终止进程

javascript - 生成的表在 firefox 33 中为空