Ответ 1
e.preventDefault();
из https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault
Отменяет событие, если оно отменено, без прекращения дальнейшего распространения события.
У меня есть ссылка на веб-странице. Когда пользователь щелкает по нему, виджет на странице должен обновляться. Однако я что-то делаю, потому что функциональность по умолчанию (переход на другую страницу) происходит до того, как сработает событие.
Вот как выглядит ссылка:
<a href="store/cart/" class="update-cart">Update Cart</a>
Вот как выглядит jQuery:
$('.update-cart').click(function(e) {
e.stopPropagation();
updateCartWidget();
});
В чем проблема?
e.preventDefault();
из https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault
Отменяет событие, если оно отменено, без прекращения дальнейшего распространения события.
Вы хотите, чтобы e.preventDefault()
предотвращал появление функциональных возможностей по умолчанию.
Или используйте return false
из своего метода.
preventDefault
предотвращает функциональность по умолчанию, а stopPropagation
предотвращает пузырьковое событие до элементов контейнера.
$('.update-cart').click(function(e) {
updateCartWidget();
e.stopPropagation();
e.preventDefault();
});
$('.update-cart').click(function() {
updateCartWidget();
return false;
});
Следующие методы достигают того же самого.
Вы можете использовать e.preventDefault();
вместо e.stopPropagation();
Этот код блокирует все прослушиватели событий
var old_element=document.getElementsByClassName(".update-cart");
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);