2010-12-05 63 views
8

如果從頁面中刪除元素,它會自動解除綁定嗎?或者這是一個應該使用jquery的解除綁定解除綁定的場景?在jQuery中解除綁定

我認爲它是自動完成的......

+0

@martym當你從dom中刪除一個元素並再次進行頁面加載時,它將不會再次綁定,因爲它無法找到該元素。它發生在下一頁加載。 – kobe 2010-12-05 00:22:55

+0

爲什麼我會做另一個頁面加載,沒有刷新?我有點困惑你的答案... – Matrym 2010-12-05 00:25:13

回答

6

如果您刪除使用removeempty元素,事件處理程序將自動以防止內存泄漏移除。否則它們將保持不變,除非它們在去除這些元素之前明確地未結合。

編輯:原來.html也將通過調用內部.cleanData方法(在行5177上聲明)來刪除事件處理程序。您可以在source檢查:

html: function(value) { 
    ... 

    for (var i = 0, l = this.length; i < l; i++) { 
        // Remove element nodes and prevent memory leaks 
        if (this[i].nodeType === 1) { 
         jQuery.cleanData(this[i].getElementsByTagName("*")); 
         this[i].innerHTML = value; 
        } 
       } 
    ... 

所以,爲了避免內存泄漏,不要直接使用innerHTML,以取代已附着jQuery的事件處理程序的DOM元素。