Jquery 一个类的所有元素只绑定一次处理程序

Jquery 一个类的所有元素只绑定一次处理程序,jquery,Jquery,如何将click事件绑定到class.myclass,以便对所有.myclass元素只执行一次处理程序,并且在用户单击另一个.myclass元素时不再执行该处理程序 $('.myclass').one('click', function() {...}); 将对每个.myclass元素执行一次处理程序,但我需要对所有.myclass元素执行一次处理程序 谢谢在第一次单击时删除事件处理程序 $('.myclass').on('click.custom', function () { $(

如何将click事件绑定到class.myclass,以便对所有.myclass元素只执行一次处理程序,并且在用户单击另一个.myclass元素时不再执行该处理程序

$('.myclass').one('click', function() {...});
将对每个.myclass元素执行一次处理程序,但我需要对所有.myclass元素执行一次处理程序


谢谢

在第一次单击时删除事件处理程序

$('.myclass').on('click.custom', function () {
    $('.myclass').off('click.custom');

    // do stuff

});
使用确保只删除该处理程序,而不删除其他单击处理程序

您可以使用:


我进行了修改以演示这一点。

使用
one
处理程序对每个事件类型的每个元素最多执行一次。但是OP希望对所有
.myclass
元素执行一次处理程序。@Satal,没有。
one()
的委托形式最多执行一次处理程序,因为它应用于
文档
,而不是单个
.myclass
元素。试试看:)是的,唯一的问题是每次点击文档都会被过滤到类中,直到点击其中一个匹配的元素,但这无论如何都不会被注意到,所以这不是一个真正的问题。@adeneo,没错,它的伸缩性可能不如您的解决方案。另一方面,它支持动态创建的
.myclass
元素:)
$(this).off('click.custom')
我想OP需要这个。@Jai,不,目标是从所有
.myclass
元素中删除处理程序,而不仅仅是当前元素。@fred但我需要处理程序一次性执行。myclass元素……我想这是更新后的表单OP。@Jai,是的,这正是我们所说的:一次性执行。myclass元素。如果仅从当前元素中删除
单击
处理程序,则单击另一个处理程序将再次运行该处理程序(但该处理程序将仅对每个元素运行一次)。^^^^^正如@FrédéricHamidi所说,必须为整个集合删除事件处理程序,而不仅仅是

$(document).one("click", ".myclass", function() {
    // ...
});