2012-06-21 61 views
0

我只用jQuery工作了幾天,所以問題可能不是很有趣。 我有DIV重新加載按鈕上方超過阿賈克斯。 DIV內容本身註冊點擊處理程序的按鈕。所以問題是:我應該刪除加載內容已註冊的處理程序嗎?刪除元素時應該刪除處理程序嗎?

我做了一些小實驗,看起來不應該。但這是真的嗎?

+0

如果從DOM中刪除元素並且沒有對它們的進一步引用,則事件處理程序最終也將被垃圾收集。 –

+0

@FelixKling,我不擅長js。 js中的引用如何? –

+0

例如'var someElement = document.getElementById('someId')'。即使元素在更新過程中被移除,「someElement」仍然會保存對該元素的引用並訪問其相關數據。 –

回答

1

如果從DOM中刪除元素,並且沒有對它們的進一步引用,事件處理程序最終也將被垃圾回收。

但是,如果你有一個參考,比如

var someElement = document.getElementById('someId') 

那麼即使元素是由您的更新過程中去除,someElement仍將保持對這個元素的引用。這也意味着事件處理程序仍然存在於內存中。