在jQuery中取消绑定

时间:2010-12-05 00:18:16

标签: jquery bind unbind

如果从页面中删除了某个元素,它会自动解除绑定吗?或者这是一个应该使用jquery解除绑定的解除方案?

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

1 个答案:

答案 0 :(得分: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元素。