我希望有一个只执行一次的事件处理程序,然后从绑定的所有元素中取消绑定。
我知道.one()
但是在使用它时“处理程序最多执行一次每个元素”。
是否有一种“内置”方法将事件处理程序绑定到多个元素,并在其中任何一个元素执行后自动将其从所有元素中删除?
答案 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.
})
答案 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');
});