2011-03-04 65 views
4

如果我的事件绑定到DOM元素,它的事件永远得到,如果元素没有被破坏?通过销毁一个元素,我指的是removeChild()。使用appendChild()将节点移动到另一个位置时,事件侦听器不会受到影响。待办事项DOM事件破坏元素之后,他们必然要,死了?

基本上我很感兴趣,这是因为我想知道如果我需要做一些清理/推倒。

回答

3

我想你的意思事件处理在这里,对不对?如果是的话那么它是垃圾收集目的要小心通过“onfoo”附要素功能的有效的关注属性。 IE为DOM和JavaScript提供了相当多的垃圾收集器,他们彼此之间不太了解。

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

虽然我讨厌建议使用JavaScript框架来处理没有如此标记的问题,实际上我不会在这里提出这样的建议,但我会说框架(通常)为您做的一件事是尽量在这种情况下保持DOM“干净”。

+0

我使用jQuery大多是绑定事件侦听器,或者只是的addEventListener。这是什么情况?听众是否和父母一起死亡? – Tower 2011-03-04 21:02:44

+0

如果您使用jQuery绑定事件处理函数**和**来处理您的DOM操作,那么它应该为您处理这些东西。 – Pointy 2011-03-04 21:07:10

+0

所以,你是说如果我使用addEventListener(),我需要在删除DOM元素之前删除监听器? – Tower 2011-03-04 21:47:54

相关问题