JavaScript регистрирует тип события сразу для нескольких элементов

0

Есть ли способ (natvie JS или JQuery) зарегистрировать один и тот же тип события в списке элементов?

Если возможно, я хочу избежать повторения регистрации события по нескольким элементам, по одному за раз.

Идеальный (псевдо) код:

$({elem1, elem2, elem3}).on("keyup", function() {
    // Do the same when each one of these elements gets focus
});
Теги:
accessibility
events
bind

2 ответа

6
Лучший ответ

С помощью jQuery:

Для ссылок на кешированные элементы вы можете использовать add:

$(elem1).add(elem2).add(elem3).on("keyup", function() {
    // Do the same when each one of these elements gets focus
});

Или, чтобы выбрать несколько элементов по имени и т.д.

$(".one, .two, .three").on("keyup", function() {
    // Do the same when each one of these elements gets focus
});

Если у вас есть динамический массив ссылок на кешированные элементы:

var cache = [elem1, elem2, elem3]; // could be any length, added to dynamically etc...

var $collection = $(); // new empty jQuery object

// add each item to the jQuery object
for(var i = 0; i < cache.length; i++) {
    $collection = $collection.add(cache[i]);
}

$collection.on("keyup", function() {
    // Do the same when each one of these elements gets focus
});
  • 0
    То же самое работает и с нативным JS: document.querySelectorAll("div, a")
  • 0
    Также общепринятая практика - помечать такие элементы некоторым CSS-классом, а затем обращаться к ним, например, к $('li.user-record').on('keyup', onUserRecordKeyUp); ,
Показать ещё 3 комментария
1

Ты можешь сделать,

$("#id1, .class2, #id3").on("keyup", function() {
    //code
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню