@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>
  • Вопрос задан
  • 2380 просмотров
Решения вопроса 1
dzedzinskiy
@dzedzinskiy
Full stack developer
а здесь разве есть защита от bubble эффекта? Вы же вешаете слушателя на параграф, поэтому при mouseover/out на все что есть внутри, благодаря bubblin код срабатывает. Без той проверки, все так же работает.
if (!isInside(event.relatedTarget, para)) проверяет, не находиться ли элемент, с которого только что ушел курсор внутри параграфа
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Market-place Ростов-на-Дону
от 100 000 до 200 000 ₽
20 июн. 2024, в 17:08
3000 руб./в час
21 июн. 2024, в 22:53
1000 руб./за проект
21 июн. 2024, в 22:12
5000 руб./за проект