2011-04-12 66 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); 
相關問題