Привязать функцию сразу к нескольким элементам jQuery

у меня есть 3 объекта jquery:

var a = $('.el1');
var b = $('.el2');
var c = $('.el3');

и я хочу привязать событие "change", чтобы все сразу, но я не могу :(

$(a, b, c).bind('paste input change', function(){ ... }); просто не работает...

но если привязать его к каждому элементу отдельно, он работает:

a.bind('...');
b.bind('...');
c.bind('...');

можно ли сделать это более коротким способом?

(и без передачи классов в качестве селекторов)

4 ответов


использовать .add() [docs]:

a.add(b).add(c).bind(...

$([a, b, c]).bind должен работать, как в:

var a = $('.el1');
var b = $('.el2');
var c = $('.el3');

$([a,b,c]).each(function(idx){
    $(this).bind('click', function(){
       alert($(this).text());
    });
});

попробуйте это:

$('.el1, .el2, .el3').bind(....)

использовать $('.el1, .el2, .el3').bind(.....

другое решение-объединить их позже:

var d = a;
d.add(b);
d.add(c);

d.bind(....

и если вам это тоже не нравится, если вы все-таки вызовете отдельные привязки, вы можете объявить именованную функцию один раз и ссылаться на это, а не объявлять ту же анонимную встроенную функцию три раза.