解决方法
如果使用
remove
或
empty
删除元素,将自动删除事件处理程序以防止内存泄漏.否则它们将保留,除非它们在删除这些元素之前明确解除绑定.
编辑:结果.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元素.