1

如何将一个处理程序绑定到多个事件,并确保即使触发了多个事件,也只调用一次处理程序?

$(".element").bind("click select" ,handl);
function handl (e) 
{ 
     //my code
}

这段代码的问题是每个事件都会调用两次句柄。如果您认为在两个事件都被触发的情况下只应该调用一次处理程序,请告诉我,因为我认为这段代码中的处理程序应该被调用两次。

4

2 回答 2

4

我不确定我是否理解正确.. 但我假设您正试图防止多个事件从一个用户操作中多次调用处理程序函数。

var isExecuting = false;
$(".element").bind("click focus" ,function () {    
    if (isExecuting) return false;
    isExecuting = true;
    handl.call(this); //maintain the context
    isExecuting = false;
});
function handl (e) 
{ 
    //your code
}
于 2013-01-14T21:28:36.780 回答
1

像这样使用闭包来包装你的事件函数

$("#a").bind("click focus", function () {
    var fired = false;
    return function() {
        if (!fired) {
           alert("click occured");
           fired = true;
        }  
    } 
}());

jsfiddle 在这里

于 2013-01-14T21:39:59.007 回答