@0x4d59

Почему parent node не реагирует на однотипное событие child node в этом куске кода (пример из eloquent JavaScript 2 ed. 14 глава)?

Не могу понять как работает эта штука. Каким образом здесь реализована эта защита от баббл-эффекта?
Заранее спасибо!
<p>Hover over this <strong>paragraph</strong>.</p>
<script>
    var para = document.querySelector("p");
    function isInside(node, target) {
      for (; node != null; node = node.parentNode)
        if (node == target) return true;
    }
    para.addEventListener("mouseover", function(event) {
      if (!isInside(event.relatedTarget, para))
        para.style.color = "red";
    });
    para.addEventListener("mouseout", function(event) {
      if (!isInside(event.relatedTarget, para))
        para.style.color = "";
    });
</script>
  • Вопрос задан
  • 2381 просмотр
Решения вопроса 1
dzedzinskiy
@dzedzinskiy
Full stack developer
а здесь разве есть защита от bubble эффекта? Вы же вешаете слушателя на параграф, поэтому при mouseover/out на все что есть внутри, благодаря bubblin код срабатывает. Без той проверки, все так же работает.
if (!isInside(event.relatedTarget, para)) проверяет, не находиться ли элемент, с которого только что ушел курсор внутри параграфа
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 12:20
10000 руб./за проект
22 нояб. 2024, в 11:53
3000 руб./за проект
22 нояб. 2024, в 11:51
20000 руб./за проект