JQuery - один обработчик для нескольких элементов с использованием переменных - PullRequest
4 голосов
/ 19 октября 2010

У меня есть две переменные, определенные следующим образом:

var $a = $('#a'),
    $b = $('#b');

Как мне переписать следующую строку, используя $ a и $ b?

$('#a, #b').click(function(e){...});

Ответы [ 4 ]

6 голосов
/ 19 октября 2010
$([$a.get(0), $b.get(0)]).click(function(e) { ... });
3 голосов
/ 19 октября 2010
$a.add($b).click(function(e){...});

add возвращает новый набор узлов, содержащий объединение.$ b может быть «почти любым, что принимает $ ()».

0 голосов
/ 04 октября 2012

Кажется, вы могли бы сделать именно это:

$(deleteBtn).add(copyBtn).add(moveBtn).click(function(){});

Как сказано здесь http://api.jquery.com/add/

0 голосов
/ 19 октября 2010

Зависит от того, что вы хотите делать дальше со своими переменными.

Вы можете просто определить их как один:

var $a = $('#a, #b');
$a.click()

Или используйте их отдельно:

/* This way the click event is applied even if each selector returns
   more then one element. And $a and $b is preserved */
$([].concat($a.toArray()).concat($b.toArray())).click(function () {
    console.log(this)
});

EDIT

Обновлен код.

.. Фредрик

...