Самый короткий способ присоединить несколько элементов DOM к одному обработчику событий с помощью JQuery?

Я должен присоединить единственный обработчик событий к нескольким элементам DOM с помощью jQuery. Я в настоящее время достигаю этого использования jQuery каждый () метод. Посмотрите ниже:

$([elm1, elm2, elm3]).each(function() {
  this.click(eventHandler);
});

Я задавался вопросом, существует ли способ сделать это, не используя каждый метод и закрытие. Я думал, что смогу сделать что-то как:

$(elm1, elm2, elm3).click(eventHandler);

Этот вид работ оператора с помощью Prototype.js, но не в jQuery. Причина, которую я задаю вопросу, состоит в том, потому что после использования и Prototype.js и jQuery я нашел, что jQuery требует, чтобы более простые операторы достигли тех же задач почти в каждой области, таким образом, я предполагаю, что должен быть лучший способ сделать это?


ОБНОВЛЕНИЕ

После некоторой отладки оказывается что моя исходная попытка сделать это использование:

$([elm1, elm2, elm3]).click(eventHandler);

Приводил becuase к сбою переменные elm1, elm2 и elm3, где создано с помощью функции $ jQuery. Таким образом, проблема изменилась и - почему делает следующее не, работайте:

var elm1 = $('#elm1');
var elm2 = $('#elm2');
var elm3 = $('#elm3');

$([elm1, elm2, elm3]).click(eventHandler);

все же с помощью DOM следующее делает:

var elm1 = document.getElementById('elm1');
var elm2 = document.getElementById('elm2');
var elm3 = document.getElementById('elm3');

$([elm1, elm2, elm3]).click(eventHandler);

5
задан Camsoft 20 April 2010 в 14:04
поделиться

2 ответа

Вы можете сделать это как можно короче следующим образом:

$([elm1, elm2, elm3]).click(eventHandler);

Если вы опустите квадратные скобки для массива, вы ' повторный вызов другой перегрузки jQuery () , в скобках вы передаете 1 аргумент в виде массива, поэтому вы вызываете конструктор jQuery (elementArray) .

6
ответ дан 14 December 2019 в 13:30
поделиться

Это должно помочь:

$([elm1, elm2, elm3]).bind('click', function(){
    // your code here.....
});

JQuery предлагает даже сделать указанный выше код короче, поэтому вы можете опустить там привязку :

$([elm1, elm2, elm3]).click(function(){ 
  // your code here
});
0
ответ дан 14 December 2019 в 13:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: