Привязать функцию сразу к нескольким элементам jQuery - PullRequest
9 голосов
/ 06 ноября 2011

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

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

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

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

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

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

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

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

Ответы [ 4 ]

22 голосов
/ 06 ноября 2011

Использование .add() [документы] :

a.add(b).add(c).bind(...
6 голосов
/ 06 ноября 2011

$ ([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());
    });
});
3 голосов
/ 06 ноября 2011

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

$('.el1, .el2, .el3').bind(....)
2 голосов
/ 06 ноября 2011

Используйте $('.el1, .el2, .el3').bind(.....

Другое решение состоит в том, чтобы объединить их позже:

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

d.bind(....

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...