2011-04-12 98 views
69

我在网页上有一个链接。当用户点击它时,页面上的小部件应该更新。不过,我正在做一些事情,因为默认功能(导航到不同的页面)发生在事件触发之前。如何使用jQuery停止默认链接点击行为

这是链接的样子:

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

这是jQuery的样子:

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

问题是什么?

+0

可能重复的[jQuery的禁用链接](http://stackoverflow.com/questions/970388/jquery -disable-a-link) – user 2014-03-02 05:21:23

回答

26

想要e.preventDefault()可以防止发生默认功能。

或从您的方法有return false

preventDefault防止默认功能和stopPropagation防止事件冒泡到容器元素。

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

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

以下方法达到完全相同的效果。

+0

为什么我需要调用'stopPropagation()'和'preventDefault()'? – smartcaveman 2011-04-12 09:11:48

+2

看看Jonathons的回答,他解释了每个功能的作用。但基本上,要确保您刚才处理的点击没有被其他人处理。 – Peeter 2011-04-12 09:13:21

1

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

0

该码带所有事件侦听器

var old_element=document.getElementsByClassName(".update-cart");  
var new_element = old_element.cloneNode(true); 
old_element.parentNode.replaceChild(new_element, old_element); 
相关问题