2013-07-06 1 views
13

Я хочу связать несколько элементов, которые определены как переменная. Я знаю, что это возможно:Связать обработчик события с несколькими переменными элементов в jQuery?

$('selector1, selector2').bind(...) 

Но я хочу сделать что-то вроде этого:

$($element1, $element2, $element3).bind(...) 

Любые идеи?

+0

Вероятно не самое лучшее, но просто для удовольствия, вы можете сделать '$ ($ el ement1.selector + "," + $ element2.selector + "," + $ element3.selector) ' – NicoSantangelo

ответ

17

Вы должны добавить их к одному результату набор:

$element1.add($element2).add($element3).bind(...) 

Или для произвольного числа элементов:

var elems = [$element1, $element2, $element3, ...]; 
var $result = $(); 

$.each(elems, function() { 
    $result = $result.add(this); 
}); 

$result.bind(...); 

Или с Array.reduce:

[$element1, $element2, $element3, ...].reduce(function($result, $elem) { 
    return $result.add($elem); 
}, $()).bind(...); 
2

Вы можете использовать add();

var $all = $element1.add($element2).add($element3).bind(...); //.add(...) 
+0

Вы протестировали это? – Blender

+0

Я предположил (возможно, ошибочно), что элементы, где js объекты, я обновил свой ответ на всякий случай – NicoSantangelo

+0

Протестируйте его. jQuery обертывает объекты массива иначе, чем обертывает объекты DOM. – Blender