我有一些绑定了事件的元素。在删除这些元素之前,我是否需要先取消绑定它们?如果我不这样做会导致问题吗?
感谢。
编辑:我意识到我错误地表达了这个问题,所以现在我正在编辑,请原谅我,但我认为这样做比制作一个新问题更有意义。
如果我更换它,我将不得不在元素上使用unbind或remove,对吗?使用js替换方法或jquery中的html方法。
答案 0 :(得分:17)
不,你不需要这样做(事件解除绑定是在删除时自动完成的。)
答案 1 :(得分:7)
如果您不再需要页面上事件的事件处理程序,那么您需要显式取消绑定的唯一时间。
从DOM中删除元素也会导致该元素的事件和数据被删除。这是相关的源代码
remove: function( selector ) {
if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
// Prevent memory leaks
jQuery( "*", this ).add([this]).each(function(){
jQuery.event.remove(this);
jQuery.removeData(this);
});
if (this.parentNode)
this.parentNode.removeChild( this );
}
}
答案 2 :(得分:1)
不,它不会造成任何问题(除非有人有不愉快的经历,他们想分享:)我的钱是'重要的不是!'。
我能想到的唯一例外是,如果您正在进行任何实时事件绑定,在这种情况下您不希望新插入的元素获取先前从DOM中删除的元素的相同事件处理程序。然后,在从DOM中删除之前取消绑定任何(实时)事件处理程序是个好主意,也就是说,您可以在任何阶段执行此操作,而不必在删除之前执行此操作。