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

Jou*_*key 9 jquery binding event-handling

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

谢谢.

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

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

Era*_*lel 17

不,您不需要这样做(事件解除绑定在删除时自动完成).

  • 如果使用jQuery('div')清除div会怎么样.html(''); 这个div里面的东西有一个点击或绑定的事件.它是否自动解除绑定. (7认同)
  • `.html(htmlString)`[也将解除其事件的绑定](http://api.jquery.com/html/#html2)"此外,jQuery在替换这些元素之前从子元素中删除其他构造,如数据和事件处理程序随着新的内容." (3认同)

Rus*_*Cam 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 );
    }
} 
Run Code Online (Sandbox Code Playgroud)