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

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

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


Можно ли сделать что-то подобное:
Object.assign(AnyClass.prototype, {
method( ) {...}
}
  • Вопрос задан
  • 437 просмотров
Подписаться 3 Простой 1 комментарий
Решения вопроса 2
zkrvndm
@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)
Ответ написан
Ваш ответ на вопрос

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

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