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

时间:2012-07-01 09:10:30

标签: jquery

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

此脚本将删除单击类型的所有事件,这有点具有侵略性。有关详细信息,请查看offunbind的文档。

答案 1 :(得分:0)

miguel camba已经告诉过你检查wiki是否解除绑定。正确的解决方案如下:

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

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

//编辑:

另一种解决方案是命名您的点击事件:

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