Javascript jQuery自定义事件侦听器

Javascript jQuery自定义事件侦听器,javascript,jquery,events,Javascript,Jquery,Events,我有以下代码: myCustomMethod(function(){ $(document).on('click','#element',function(){ console.log('First call'); }); }); setTimeout(function(){ myCustomMethod(function(){ $(document).on('click','#element',function(){

我有以下代码:

myCustomMethod(function(){
    $(document).on('click','#element',function(){
        console.log('First call');
    });
});

setTimeout(function(){
    myCustomMethod(function(){
        $(document).on('click','#element',function(){
            console.log('Second call, event first call should be destroyed');
        });
    });
},2000);


function myCustomMethod(funcn){
    funcn();            
}
当我使用浏览器进行测试时,我单击了#元素控制台显示第一次调用

但2秒后,我再次点击它显示

First call
Second call, event first call should be destroyed
如果事件侦听器被修改,我想删除它(下面的部分)

仅激发
console.log('Second call,event first call应被销毁')


非常感谢

添加事件处理程序不会删除以前的事件处理程序,它只会添加更多,这就是为什么不删除旧的事件处理程序

您可以使用删除jQuery中的事件处理程序

$(document).on('click.custom', '#element', function(){
    console.log('First call');
});

setTimeout(function(){
    $(document).off('click.custom').on('click.newclick','#element',function(){
        console.log('Second call, event first call should be destroyed');
    });
},2000);
要删除特定事件的所有以前的处理程序,请执行以下操作

$(document).off('click');

您正在使用的函数毫无意义,请注意,您可以在以后删除特定事件。

添加事件处理程序不会删除以前的事件处理程序,它只会添加更多,这就是为什么不删除旧的事件处理程序

您可以使用删除jQuery中的事件处理程序

$(document).on('click.custom', '#element', function(){
    console.log('First call');
});

setTimeout(function(){
    $(document).off('click.custom').on('click.newclick','#element',function(){
        console.log('Second call, event first call should be destroyed');
    });
},2000);
要删除特定事件的所有以前的处理程序,请执行以下操作

$(document).off('click');

您使用的函数一点也没有意义,请注意,您可以稍后删除特定事件。

然后您必须删除它们,它们在附加新的onesCan时不会神奇地不一致,我会找到函数中调用的所有处理程序?只要它们附加在jQuery的on()中,您可以使用off()删除它们,阅读上面的答案。我的意思是找到
click.custom
并将其保存到一个变量中,然后使用off()删除它,如果新的处理程序触发了驻留,
click.custom
只是一种访问命名空间的方法,您可以执行
click.myclick
click.santa
或其他任何您喜欢的操作,这样您就不会删除所有的点击,但只有具有该名称的点击,这样更容易管理。如果您需要删除所有单击,只需使用
off('click')
。然后您必须删除它们,当您附加新的onesCan时,它们不会神奇地消失。我可以找到在函数中调用的所有处理程序?只要它们附加了jQuery的on(),您就可以使用off()删除它们,阅读上面的答案。我的意思是找到
click.custom
并将其保存到一个变量中,然后使用off()删除它,如果新的处理程序触发了驻留,
click.custom
只是一种访问命名空间的方法,您可以执行
click.myclick
click.santa
或其他任何您喜欢的操作,这样您就不会删除所有的点击,但只有具有该名称的点击,这样更容易管理。如果需要删除所有单击,只需使用
off('click')