如果我将事件绑定(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/