8

如果从页面中删除一个元素,它会自动解除绑定吗?或者这是一个应该使用 jquery 的取消绑定来取消绑定的场景?

我认为它是自动完成的...

4

1 回答 1

6

如果您使用removeor删除元素empty,事件处理程序将自动删除以防止内存泄漏。否则它们将保留,除非在删除这些元素之前明确取消绑定。

编辑:结果.html将通过调用内部.cleanData方法(在第 5177 行声明)来删除事件处理程序。您可以在源代码中检查这一点:

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 元素。

于 2010-12-05T00:22:06.997 回答