DOM事件是否会在元素之后被破坏,它们必然会死掉?

时间:2011-03-04 19:32:13

标签: javascript events dom

如果我将一个事件绑定到一个DOM元素,那么该元素是否会被破坏?通过销毁一个元素,我指的是removeChild()。使用appendChild()将节点移动到另一个位置会使事件侦听器保持不变。

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

1 个答案:

答案 0 :(得分:3)

我认为你的意思是处理程序,对吗?如果是这样,那么对于垃圾收集目的而言,要注意通过“onfoo”属性附加到元素的函数是一个有效的问题。 IE具有相当于为DOM和JavaScript分离垃圾收集器的功能,而且他们对彼此了解不多。

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

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