2010-12-05 64 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元素。