Javascript 如何解除动态元素的事件绑定?

Javascript 如何解除动态元素的事件绑定?,javascript,jquery,Javascript,Jquery,我使用以下命令绑定动态插入DOM的某些元素上的单击事件 jQuery('#cont').on('click', '.myElement1', ....); 在这种情况下,我将如何解除绑定它们 值得一提的是,jQuery('.myElement1').unbind('click')不起作用,因为click事件中的代码执行了多次,因为click事件被多次注册。您无法解除.myElement1上的事件处理程序的绑定,因为它被绑定到\cont。在不影响所有其他实例的情况下,无法从单个.myElemen

我使用以下命令绑定动态插入DOM的某些元素上的
单击
事件

jQuery('#cont').on('click', '.myElement1', ....);
在这种情况下,我将如何解除绑定它们


值得一提的是,
jQuery('.myElement1').unbind('click')
不起作用,因为click事件中的代码执行了多次,因为
click
事件被多次注册。

您无法解除
.myElement1
上的事件处理程序的绑定,因为它被绑定到
\cont
。在不影响所有其他实例的情况下,无法从单个
.myElement1
实例中删除事件

作为一种解决方法,您可以向
.myElement
添加另一个类,然后从动态选择器中排除该类:

$('#cont')。在('click','myElement1:not(.ignore'),function(){
log('Foo clicked');
});
$('.add')。单击(函数(){
变量$div=$('Foo')。附录('#cont');
$div.addClass($(this.data('class'));
});
。忽略{color:#C00;}

添加可点击的
添加不可链接的
尝试使用
jQuery('.myElement1').off('click')
.off()


这将删除eventHandler。

jQuery(“#cont”).off().on('click'、'.myElement1'、…)@ShreeKhanal将停止事件处理程序处理任何未来的
.myElement1
实例
jQuery('#cont').off()
会做什么?它会删除其中每个元素上的事件吗?@asprin建议使用
off
而不是
unbind
。您的代码中有多少个名为“myElement1”的类?这将不起作用,原因有二。首先,事件处理程序不在
myElement1
上,它被委托给
#cont
。其次,如果取消委托元素,它将删除所有
.myElement1
实例的处理程序,而不仅仅是OP想要针对的特定实例