2

我想要一个事件处理程序,它只执行一次,然后将自己与它绑定的所有元素解除绑定。

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

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

4

2 回答 2

1

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');
});
于 2013-04-24T05:49:41.707 回答
1

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

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

该脚本将删除所有click类型的事件,这有点激进。检查文档以了解更多信息

于 2012-07-01T09:18:03.903 回答