【发布时间】:2013-02-04 19:43:47
【问题描述】:
假设我有三个按钮
<button data-action="grow" class="resizeButton">Grow</button>
<button data-action="shrink" class="resizeButton">Shrink</button>
<button id="normalButton">Normal Button</button>
我在变量中有按钮
var $normalButton = $('#normalButton');
var $growButton = $('.resizeButton[data-action="grow"]');
var $shrinkButton = $('.resizeButton[data-action="shrink"]');
现在假设我想将mouseenter、mouseleave 和click 事件处理程序连接到普通按钮
$normalButton.on({
mouseenter: function(){
//do some stuff
},
mouseleave: function(){
//reverse some stuff
},
click: function(){
//do some more stuff
}
});
神奇的 jQuery 向导让我们可以完成这项工作。
现在假设我们想将mouseenter、mouseleave 和click 事件处理程序附加到增长按钮和收缩按钮。这些按钮的处理程序相同,但普通按钮的处理程序不同。
我可以看到有几种方法可以做到这一点,但它们基本上都是相同的想法,只需将它们分配两次,一次分配给第一个按钮,一次分配给下一个按钮。
所以,
var handlers = {
mouseenter: function(){
//do some different stuff
},
mouseleave: function(){
//reverse some different stuff
},
click: function(){
//do some more different stuff
}
};
$growButton.on(handlers);
$shrinkButton.on(handlers);
或
$.each([$growButton, $shrinkButton], function(i, el){
el.on({
mouseenter: function(){
//do some different stuff
},
mouseleave: function(){
//reverse some different stuff
},
click: function(){
//do some more different stuff
}
});
});
但我想知道是否有一种语法可以从中创建一个 jQuery 对象,或者只是将处理程序应用于一组缓存的选择器,如 $([$growButton, $shrinkButton]).on(... 或类似的?
【问题讨论】:
标签: javascript arrays jquery-selectors jquery