1

我有一个button,一个div和一个select combo-box

我想在单击按钮时执行特定功能,在 div中的 mouseenter以及组合框的 onchange 和 blur 上执行

我现在就这样做

$("#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

4

3 回答 3

2

您有单独的事件和单独的选择器,因此一个选择器或事件是不够的,您可以映射 id 和事件。我认为 jquery 无法使其成为单一语句。

现场演示

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);  
}
于 2012-11-01T09:26:41.043 回答
1

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

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

$("#divID").bind('mouseenter', callback);
$("#comboID").bind('blur change', callback);
$("#buttonID").bind('click', callback);
于 2012-11-01T09:22:02.097 回答
0

如果您不使用 jquery,您始终可以将其他事件设置为等于第一个事件。但好的做法是创建一个单独的函数

于 2012-11-01T09:23:58.543 回答