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