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

226
12 мая 2019, 21:00

У меня есть двухступенчатый список:

<ul>
  <li id="l1-1">
    1 Уровень
    <ul>
      <li id="l2-1">
        2 Уровень
      </li>
      <li id="l2-2">
       2 Уровень
      </li>
    </ul>
  </li>
</ul>

Для элемента с идентификатором "l1-1" поставил событие onclick, чтобы скрыть все дочерные элементы внутри себя. Также поставил событие onclick для "#l2-1" и "#l2-2", чтобы при нажатии в консоль выводилось содержание элемента.

document.querySelector("l1-1").addEventListener("click", hideElements);
document.querySelector("l2-1").addEventListener("click", printInConsole);
document.querySelector("l2-2").addEventListener("click", printInConsole);

Но при нажатии на элемент "#l2-1" и "l2-2" они исчезали, срабатывало событие для "#l1-1". Попытался обойти так:

if(event.srcElement == this) ...

Но тогда события для "#l2-1" и "#l2-2" вообще не срабатывают.

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

Answer 1

Я разобрался! если добавить обработку:

if(event.srcElement == this) ...

Внутри события, и вместо onclick использовать событие onmousedown все работает!

READ ALSO
background-image слайдер, как сделать плавность?

background-image слайдер, как сделать плавность?

Всем привет! Есть у меня JS код слайдера при помощи background-imageПроблема в том, что он меняет изображения очень резко

183
Помощь в реализации ползунка на svg

Помощь в реализации ползунка на svg

нужна помощь в реализации элемента интерфейсаРешил я реализовать 1 элемент, скрин его вы увидите ниже, и что-то понятия не имею как такое реализуется

210
Как использовать scrollTop?

Как использовать scrollTop?

Как использовать scrollTop,? Объясните принцип работы пожалуйста

232
Тайминг анимации css

Тайминг анимации css

Есть 4 текста и 8 картинокПо одному тексту на 2 картинки

226