SpiderPigAndCat
@SpiderPigAndCat
занимаюсь салообразованием

Как по клику выбрать элемент на который кликнул?

https://codepen.io/DimaDolgoter/pen/WNrxaKG

Как по клику выбрать элемент на который кликнул? Работает только если выбирать один элемент через querySelector

document.querySelector(".m1").addEventListener("click",  function(e){ 
this.style.backgroundColor = "red";
});

но как быть если все должны прослушиваться?

querySelectorAll не срабатывает.
  • Вопрос задан
  • 2489 просмотров
Решения вопроса 2
@dimoff66
Кратко о себе: Я есть
document.querySelectorAll(".m1")
  .forEach(el => el.addEventListener("click",  function(e){ 
    this.style.backgroundColor = "red";
  }));
Ответ написан
https://davidwalsh.name/event-delegate
https://developer.mozilla.org/en-US/docs/Learn/Jav...
Раздел "Event delegation"
Вам нужно слушать верхний объект и проверять наличие класса у event.target (ниже написали, что лучше проверять target.closest если в айтеме будут span или другая верстка)

Проблемы с добавлением ивента в цикле на каждый елемент начнуться в тот момент, когда ты решишь удалять или добавлять елементы динамически через JS. Тебе нужно будет добавлять слушатель новым элементам и делать removeEventListener тем, которые удаляешь.
Если предпочитаешь добьавлять слушатель в цикле то используй не addEventListener а
element.onclick , для этих слушателей не нужно вызывать removeEventListener
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
PML
@PML
Web-developer
Через цикл перебирай элементы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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