Правильным способом является использование stopPropagation
, который является более новым методом его исторического псевдонима cancelBubble
, и отменяет всплывающее событие.
В некоторых ситуациях preventDefault
может работать, хотя имейте в виду, что это не отменяет всплытие, но может иметь аналогичный эффект.
Обновлено: похоже, это не будетработать, если оно не сочетается с preventDefault
.Посмотрим позже, чтобы понять, почему это так.
Фрагмент стека
var no_click = document.querySelector('.no-click');
no_click.addEventListener('click', function(e) {
e.stopPropagation();
e.preventDefault(); //temp. update, though this should NOT be needed
console.log('hey');
})
.test {
width: 100px;
height: 100px;
background-color: red;
position: relative;
}
.no-click {
position: absolute;
top: 25%;
right: 25%;
width: 50px;
height: 50px;
background-color: blue;
}
<a href="https://example.com">
<div class="test">
<div class="no-click">
</div>
</div>
</a>