我有button
,div
和select 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
答案 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,你总是可以设置其他事件等于第一个......但是好的做法是创建一个单独的函数