jquery事件处理程序仅在绑定到多个元素时执行

我希望有一个只执行一次的事件处理程序,然后从绑定的所有元素中解除绑定。

我知道.one()但是在使用它时“ 每个元素最多执行一次处理程序”。

是否有一种“内置”方法将事件处理程序绑定到多个元素,并且一旦在其中任何一个元素上执行它就会自动从所有元素中删除它?

简单。 只需取消绑定回调函数中的事件处理程序。 像这样:

 $('p').on('click', function(){ alert('I appear only one time'); $('p').off('click'); // Removes the event. So, it will never be executed again. }) 

此脚本将删除click类型的所有事件,这有点具有攻击性。 有关详细信息,请查看文档以获取关闭取消绑定

米格尔坎巴已经告诉过你检查维基的解体。 正确的解决方案如下:

  var handler = function() { alert('I appear only one time'); $('p').unbind('click', handler); } $('p').bind('click', handler); 

这将解除click事件中的此处理程序。

//编辑:

另一个解决方案是命名您的click事件:

 $('p').bind('click.myClickEvent', function() { alert('I appear only one time'); $('p').unbind('click.myClickEvent'); });