.off()、.undelete()和.unbind()事件仅来自复制的元素
.off(), .undelegate(), .unbind() event only from copied element
我正在使用
$(document).on('click', '.mySelector', function () {
//do something
});
将事件委派给按钮。接下来,我将使用.clone(true)
来复制div
,其中包含一些带有委派事件的按钮。我的问题是如何从选定的新建按钮中删除事件?我试过了:
$(document).unbind('click', $(myNewDiv).find('.mySelector'));
不知怎的,它正在从整个文档中的所有$('.mySelector')
中删除事件,而不仅仅是从"myNewDiv"对象内部删除事件。
我看过jQuery .off()
和.undelegate()
的文档,它们只接受类似字符串的选择器(我的div不能有任何唯一的ID(。
当事件被委托给文档时,是否有任何选项可以从jQuery对象内的选定元素中删除事件?
您可以在克隆中添加一个类:
var $clone = $original.clone(true).addClass("clone");
并在您的委托处理程序中拒绝该类:
$(document).on("click", ".mySelector:not(.clone)", function() {
// Do something...
});
$(document).on('click', '.mySelector', function(){
//do something
});
上面的代码意味着,"将一个单击处理程序附加到文档中,因此每当单击与".mySelector"选择器对应的任何元素时,都会激发该处理程序"。
无论何时克隆一个元素,都会克隆它的类,因此它也适合".mySelector"。
您委托的处理程序附在文档上,而不是elmenet本身。为了使新元素不激发处理程序,必须使它们不适合选择器。因此,要么在克隆后将它们的类更改为".mySelector2",要么其他什么。
相关文章:
- 使用数据属性将HTML数据复制到另一个元素
- 使用javascript代码将HTML元素复制到剪贴板
- 复制要在模式框中显示的父元素
- 复制和修改元素,以便在html文档的另一部分使用它们
- 我想放一个JS函数,它适用于列表的所有元素,但我可以't将其复制到每个元素中
- 复制元素的最佳方式是:只复制元素的类型和属性
- 是否可以将一个DOM元素转换为另一个?或者从中复制所有属性
- 使用jQuery复制元素
- 如何使用getElementByClassName而不是getElementById来复制元素
- 独立于原始元素复制元素
- 动态复制元素 ID
- 使用Javascript复制元素并命名w/counter
- 如何复制元素's事件及其内部HTML
- 如何在 js 数组中复制元素
- jQuery追加复制元素
- 按+1 NOT x 2复制元素
- AngularJS复制元素1秒
- Javascript复制元素值,其中元素名有一个句号
- 复制元素并重复,直到视窗被填满
- 如何在IE7中使用jquery从iframe复制元素到主DOM