如果一个元素从页面中移除,它会自动解绑吗?还是说这种情况下应该使用jQuery的unbind方法来手动解绑呢?
我认为它会自动解绑...
我认为它会自动解绑...
remove
或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 元素。