Задать вопрос
dom1n1k
@dom1n1k

Как поставить один обработчик, который слушает много элементов?

Фактически, нужен vanilla-аналог примерно такого jQuery-кода:
$("body").on("click", "a.someclass", function (event) {
    // ...
});

Идея такая: на странице много ссылок (а может и кнопок), клики по которым нужно слушать. По каким именно - определяется селектором (класс или атрибут).

Вешать 100500 одинаковых обработчиков на каждую ссылку не хочется. Во-первых, их может быть много. Во-вторых, эти количество этих ссылок может меняться, могут добавиться, могут убавиться.
Хочется один центральный обработчик, который всё это разрулит. Фактически, ему только нужно понять, что клик произошел на одном из нужных [a] элементов и получить доступ к этому элементу (потому что на нём висят атрибуты).

Про всплытие и перехват событий, конечно же, читал - но что-то не могу на практике сложить всё это в кучу. Непонятность в том, где и когда конкретно я должен перехватывать событие? Засада в том, что внутри [a] ведь могут быть другие элементы, то есть переменная event.target не обязательно будет указывать на [a].
  • Вопрос задан
  • 234 просмотра
Подписаться 1 Оценить Комментировать
Ответ пользователя Дмитрий К ответам на вопрос (2)
@Sad_Bro
На темной стороне.
все правильно мыслите про делегирование, вешаете обработчик на родителя, да хоть на body. И отлавливаете клики по ссылкам, далее отсеиваете нужные по классу или атрибуту.
Ответ написан