jquery unbinding是否有必要? (替换元素)

时间:2009-09-06 22:59:16

标签: jquery binding event-handling

我有一些绑定了事件的元素。在删除这些元素之前,我是否需要先取消绑定它们?如果我不这样做会导致问题吗?

感谢。

编辑:我意识到我错误地表达了这个问题,所以现在我正在编辑,请原谅我,但我认为这样做比制作一个新问题更有意义。

如果我更换它,我将不得不在元素上使用unbind或remove,对吗?使用js替换方法或jquery中的html方法。

3 个答案:

答案 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中删除之前取消绑定任何(实时)事件处理程序是个好主意,也就是说,您可以在任何阶段执行此操作,而不必在删除之前执行此操作。