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>
Насколько я понимаю, e.preventDefault()
предотвращает поведение по умолчанию (отправляя при нажатии кнопки отправки, следуя URL-адресу при нажатии на ссылку). e.stopPropagation()
останавливает событие от барботажа другим слушателям, поэтому, возможно, тот, который вы хотите.
[ MDN ]
e.stopPropagation()
не только прекращает всплывание, но и прекращает захват (если используется со вторым аргументом addEventListener как true
)
Если вы хотите, чтобы только родитель получил событие касания, вы можете добавить
pointer-events: none
в css для дочерних элементов.