将不同的事件绑定到多个HTML元素,但执行一个功能

时间:2012-11-01 09:20:00

标签: javascript bind jquery

我有buttondivselect combo-box

我想在点击按钮 on mouseenter in div onchange and blur of the combobox 上执行特定功能

我现在就这样做

$("#divID").bind('mouseenter',function(){

   // do my stuff
}) 

$("#comboID").bind('blur change',function(){

   // do my stuff
})  

$("#buttonID").bind('click',function(){

   // do my stuff
})  

我每次都做同样的事情。我想将所有事件组合在一起以避免重复是否有办法在一个语句中将每个元素与特定事件绑定

我知道我可以在单独的function中编写代码并每次调用它(解决重复问题)。

但我想知道这可以在没有单独的function且只有jQuery

的情况下完成

3 个答案:

答案 0 :(得分:2)

你有seprate选择器的seprate事件,所以一个选择器或事件是不够的,你可以映射id和事件。我认为jquery无法帮助制作单一的声明。

<强> Live Demo

arrIDs = ['divID','comboID','buttonID'];
arrEvents = ['mouseenter','blur change','click'];

for(idx=0; idx < arrIDs.length; idx++) 
    $("#" + arrIDs[idx] ).bind(arrEvents[idx], yourFunction);

function yourFunction(event)
{
    alert("yourFunction call by " + event.target.id);  
}

答案 1 :(得分:1)

不在一个语句中,因为您要将不同的事件附加到不同的元素。但是你可以声明一个你为所有事件调用的回调函数。

var callback = function () {
  // do my stuff
};

$("#divID").bind('mouseenter', callback);
$("#comboID").bind('blur change', callback);
$("#buttonID").bind('click', callback);

答案 2 :(得分:0)

如果你不使用jquery,你总是可以设置其他事件等于第一个......但是好的做法是创建一个单独的函数