2011-03-04 62 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

相關問題