如何使用jQuery停止默认链接点击行为


88

我在网页上有一个链接。当用户单击它时,页面上的小部件应该更新。但是,我正在做一些事情,因为默认功能(导航到其他页面)在事件触发之前发生。

链接如下所示:

<a href="store/cart/" class="update-cart">Update Cart</a>

jQuery如下所示:

$('.update-cart').click(function(e) { 
  e.stopPropagation(); 
  updateCartWidget(); 
});

问题是什么?


Answers:



34
$('.update-cart').click(function(e) {
    updateCartWidget();
    e.stopPropagation();
    e.preventDefault();
});

$('.update-cart').click(function() {
    updateCartWidget();
    return false;
});

以下方法可以实现完全相同的效果。


为什么我需要调用stopPropagation()preventDefault()
smartcaveman 2011年

2
看看Jonathons的答案,他解释了每个功能的作用。但基本上,要确保您刚处理的点击稍后不会被其他人处理。
Peeter


3

您可以使用e.preventDefault();代替e.stopPropagation();


1

此代码剥离所有事件侦听器

var old_element=document.getElementsByClassName(".update-cart");    
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);  
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.