Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .off(),.undelegate(),.unbind()事件仅来自复制的元素_Javascript_Jquery - Fatal编程技术网

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)
无论如何,您之前的评论可能很有帮助,因为如果它绑定到元素中的所有选择器,当我更改此元素的选择器时,它应该停止触发此事件吗?