我在网页上有一个链接。当用户单击它时,页面上的小部件应该更新。但是,我正在做一些事情,因为默认功能(导航到不同的页面)发生在事件触发之前。
这就是链接的样子:
<a href="store/cart/" class="update-cart">Update Cart</a>
这就是jQuery的样子:
$('.update-cart').click(function(e) {
e.stopPropagation();
updateCartWidget();
});
有什么问题?
答案 0 :(得分:123)
e.preventDefault();
来自https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault
如果事件可以取消,则取消该事件, 不停止进一步传播 事件。
答案 1 :(得分:28)
您希望e.preventDefault()
阻止发生默认功能。
或者从您的方法中获得return false
。
preventDefault
会阻止默认功能,stopPropagation
会阻止事件冒泡到容器元素。
答案 2 :(得分:26)
$('.update-cart').click(function(e) {
updateCartWidget();
e.stopPropagation();
e.preventDefault();
});
$('.update-cart').click(function() {
updateCartWidget();
return false;
});
以下方法完全相同。
答案 3 :(得分:2)
您可以使用e.preventDefault();
代替e.stopPropagation();
答案 4 :(得分:1)
此代码剥离所有事件侦听器
var old_element=document.getElementsByClassName(".update-cart");
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);
答案 5 :(得分:0)
我刚刚在这上面浪费了一个小时。我尝试了所有方法 - 结果(我简直不敢相信)给我的取消按钮和取消元素 id 意味着任何阻止事件传播的尝试都会失败!我猜 HTML 页面必须将此视为某人按下 ESC?