Я должен присоединить единственный обработчик событий к нескольким элементам 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);
Вы можете сделать это как можно короче следующим образом:
$([elm1, elm2, elm3]).click(eventHandler);
Если вы опустите квадратные скобки для массива, вы ' повторный вызов другой перегрузки jQuery ()
, в скобках вы передаете 1 аргумент в виде массива, поэтому вы вызываете конструктор jQuery (elementArray)
.
Это должно помочь:
$([elm1, elm2, elm3]).bind('click', function(){
// your code here.....
});
JQuery предлагает даже сделать указанный выше код короче, поэтому вы можете опустить там привязку
:
$([elm1, elm2, elm3]).click(function(){
// your code here
});