Javascript .off(),.undelegate(),.unbind()事件仅来自复制的元素
我正在使用Javascript .off(),.undelegate(),.unbind()事件仅来自复制的元素,javascript,jquery,Javascript,Jquery,我正在使用 $(document).on('click', '.mySelector', function () { //do something }); 将事件委托给按钮。 接下来,我将使用.clone(true)来复制div,其中包含几个带有委派到it事件的按钮。 我的问题是如何从选定的新创建按钮中删除事件? 我试过: $(document).unbind('click', $(myNewDiv).find('.mySelector')); 不知何故,它正在从整个文档中的所有$(
$(document).on('click', '.mySelector', function () {
//do something
});
将事件委托给按钮。
接下来,我将使用.clone(true)
来复制div
,其中包含几个带有委派到it事件的按钮。
我的问题是如何从选定的新创建按钮中删除事件?
我试过:
$(document).unbind('click', $(myNewDiv).find('.mySelector'));
不知何故,它正在从整个文档中的所有$('.mySelector')
中删除事件,而不仅仅是从“myNewDiv”对象中删除事件
我看过jQuery.off()
和.undelegate()
的文档,它们只接受类似字符串的选择器(我的div不能有任何唯一的ID)
当事件委托给文档时,是否有任何选项可以从jQuery对象内的选定元素中删除事件
$(document).on('click', '.mySelector', function(){
//do something
});
上面的代码的意思是“将一个click处理程序附加到文档中,因此每当单击与“.mySelector”选择器对应的任何元素时,都会触发该处理程序”
每当您克隆一个元素时,您也会克隆它的类,因此它也将适合“.mySelector”
您委派的处理程序附加到文档,而不是elmenets本身。为了使新元素不触发处理程序,必须使它们不适合选择器。因此,在克隆后,可以将其类更改为“.mySelector2”,或者其他任何类型。您可以向克隆添加一个类:
var $clone = $original.clone(true).addClass("clone");
并在委托处理程序中拒绝该类:
$(document).on("click", ".mySelector:not(.clone)", function() {
// Do something...
});
对不起,我的错误,在代码中是
clone(true)
无论如何,您之前的评论可能很有帮助,因为如果它绑定到元素中的所有选择器,当我更改此元素的选择器时,它应该停止触发此事件吗?