e.preventDefault (); предотвращает образование пузырей, НО как мы можем предотвратить дальнейшее снижение фазы захвата у детей

0

e.preventDefault(); предотвращает пузырьки, НО как мы можем предотвратить фазу захвата от дальнейшего перехода к детям.

В принципе, у меня есть родительские и дочерние элементы, все из которых имеют события щелчка, но я хочу запускать щелчок ТОЛЬКО родителя, а не детей, когда пользователь нажимает на ребенка.

В следующем примере, когда пользователь нажимает на какой- a тег, он не должен перенаправлять пользователя на страницу href, вместо этого должен parentdiv событие parentdiv элемента parentdiv

<div id='parentdiv'>
    <a href="a.html"></a>
    <a href="b.html"></a>
    <a href="c.html"></a>
</div>
  • 1
    почему у вас есть события щелчка на детях, если вы не хотите, чтобы на них нажимали?
  • 0
    Прикрепленные старые события кликов, мы должны жить с этим сейчас.

2 ответа

2

Насколько я понимаю, e.preventDefault() предотвращает поведение по умолчанию (отправляя при нажатии кнопки отправки, следуя URL-адресу при нажатии на ссылку). e.stopPropagation() останавливает событие от барботажа другим слушателям, поэтому, возможно, тот, который вы хотите.

[ MDN ]

  • 0
    e.stopPropagation() не только прекращает всплывание, но и прекращает захват (если используется со вторым аргументом addEventListener как true )
  • 0
    Это предотвратит срабатывание обработчика щелчка родительского элемента только при щелчке дочернего элемента, а не наоборот.
Показать ещё 1 комментарий
0

Если вы хотите, чтобы только родитель получил событие касания, вы можете добавить

pointer-events: none

в css для дочерних элементов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню