将一个处理程序绑定到许多事件

时间:2013-01-14 21:18:15

标签: jquery events

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

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

此代码的问题是每个事件都会调用两次handl。如果您认为只有在两个事件都被触发时才应该调用一次处理程序,请告诉我,因为我认为应该调用此代码中的处理程序两次。

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

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

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

jsfiddle of it here