如何将jQuery事件处理程序应用于多个缓存选择器?

Hai*_*ood 2 javascript arrays jquery jquery-selectors

可以说我有三个按钮

<button data-action="grow" class="resizeButton">Grow</button>
<button data-action="shrink" class="resizeButton">Shrink</button>
<button id="normalButton">Normal Button</button>
Run Code Online (Sandbox Code Playgroud)

我有变量按钮

var $normalButton = $('#normalButton');
var $growButton = $('.resizeButton[data-action="grow"]');
var $shrinkButton = $('.resizeButton[data-action="shrink"]');
Run Code Online (Sandbox Code Playgroud)

现在可以说,我要挂钩了mouseenter,mouseleaveclick事件处理程序的正常按钮

$normalButton.on({
   mouseenter: function(){
       //do some stuff
   },

   mouseleave: function(){
       //reverse some stuff
   },

   click: function(){
       //do some more stuff
   }
});
Run Code Online (Sandbox Code Playgroud)

神奇的jQuery向导让这对我们有用.

现在假设我们想要向增长按钮和缩小按钮添加一个mouseenter,mouseleaveclick事件处理程序.这些按钮的处理程序相同,但正常按钮的处理程序不同.

有几种方法我可以看到这样做,但它们基本上是相同的想法,只需分配两次,一次到第一个按钮,一次到下一个按钮.

所以,

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);
Run Code Online (Sandbox Code Playgroud)

要么

$.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
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

但我想知道的是,是否有一个语法来创建一个jQuery对象,或者只是将处理程序应用于一组缓存的选择器像$([$growButton, $shrinkButton]).on(...或类似?

und*_*ned 8

你可以使用add方法:

$growButton.add($shrinkButton).on(...)
Run Code Online (Sandbox Code Playgroud)