NooNoo
@NooNoo
Yep

Как повесить обработчик на несколько элементов?

Всем привет!

Полагаю, что это не самый трудный вопрос, но я бьюсь уже долго над этой задачей. Как повесить обработчик событий на каждую кнопку?

Код:
https://jsfiddle.net/qc6fhzLg/
  • Вопрос задан
  • 4783 просмотра
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
Делегирование, назначаем обработчик один раз:

document.querySelector('.container').addEventListener('click', e => {
  if (e.target.tagName === 'BUTTON') {
    e.target.parentNode.querySelector('img').classList.toggle('active');
  }
});

Или каждому элементу индивидуально:

const buttons = document.querySelectorAll('.container button');
const onClick = e => e.target.previousElementSibling.classList.toggle('active');
buttons.forEach(n => n.addEventListener('click', onClick));
Ответ написан
Комментировать
@Finch_85
https://jsfiddle.net/mdsmmy3L/2/

Немного переделал вариант товарища выше на ES6
Стильно, модно. молодежно! (ES6). Без prototype и call и короче
let buttons = document.querySelectorAll('.btn');


buttons.forEach((elem)=>{
	elem.addEventListener('click',()=>{
      elem.parentNode.querySelector('.picture').classList.toggle('active')
  })
})
Ответ написан
Комментировать
rockon404
@rockon404
Frontend Developer
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы