Есть ли способ красиво вызвать addeventlistener несколько раз?

Всем привет! Подскажите, есть ли способ красиво вызвать addeventlistener несколько раз?
На данный момент я не знаю другого способа, кроме как просто:
trigger1.addEventListener('mouseenter', function () {
    changer('OptionOne', OptionOne);
})
trigger2.addEventListener('mouseenter', function () {
    changer('OptionOne', OptionOne);
})


Можно ли сделать что-то подобное:
Object.assign(AnyClass.prototype, {
method( ) {...}
}
  • Вопрос задан
  • 389 просмотров
Решения вопроса 2
@zkrvndm
Софт для автоматизации
Обычно делают так:
document.body.addEventListener('mouseenter', function(e) {
    console.log(e.target);
});

В переменной e.target будет лежать целевой элемент, проверяйте его на соответствие и если он соответствует...

code.mu/ru/javascript/manual/dom/matches
Ответ написан
Комментировать
Если это элементы с разными классами и т.д., то можете собрать отдельную коллекцию элементов в массив, затем через forEach пройтись по этому массиву и навесить им слушатель, если я правильно понял вопрос.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Tpona
@Tpona
Ужасный перфекционист
Если для набора элементов на одно событие нужно навесить одну и ту же функцию, то можно так:
((triggers, event, func) => {
  triggers.forEach(
    trigger => trigger.addEventListener(event, func)
  )    
})([trigger1,trigger2,trigger3], 'mouseenter', (e) => {changer('OptionOne', OptionOne);})

или так
const myAwesomeFunc = (e) => {changer('OptionOne', OptionOne);}

const addEventListeners = (triggers, event, func) => {
  triggers.forEach(
    trigger => trigger.addEventListener(event, func)
  )    
}

addEventListeners([trigger1,trigger2,trigger3], 'mouseenter', myAwesomeFunc)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 апр. 2024, в 22:11
2000 руб./за проект
24 апр. 2024, в 22:00
500 руб./в час
24 апр. 2024, в 21:49
10000 руб./за проект