godsplane
@godsplane

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

<div class="elem">
 <span></span>
</div>

-
document.addEventListener('click' , function(e) {
let elem = document.querySelector('.elem');
if(e.target == elem) {
alert('k')
}
})

Как при клике на span вызывать отрабывать условие на alert?
  • Вопрос задан
  • 883 просмотра
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Если стоит цель обработать клик на конкретном элементе или на его контейнере, то повешайте обработчик на один из этих элементов, а не на весь документ, иначе замучаетесь идентифицировать target.
let elem = document.querySelector('.elem'); // Берем нужный контейнер
    elem.addEventListener('click' , function(e) // вешаем обработчик только на elem, за счет всплытия события, обработчик будет срабатывать на всех дочерних элементах
    {
      alert('k');
    });

Если уж хотите оставить обработчик на документе, то идентифицируйте target.
document.addEventListener('click' , function(e)
    {
      let elem = document.querySelector('.elem');
      if(   e.target == elem // кликнули на сам контейнер elem
         || e.target.tagName == 'SPAN' && e.target.parentNode == elem // или кликнули на какой-то элемент span, непосредственный родитель которого есть наш контейнер elem
        )
      {
        alert('k');
      }
    })
Ответ написан
@obemgcabazn
document.addEventListener('click' , function(e) {
  let elem = document.querySelector('.elem span');
  if(e.target == elem) {
    alert('k')
  }
})
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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