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

时间:2011-04-12 07:52:15

标签: javascript jquery events javascript-events click

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

这就是链接的样子:

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

这就是jQuery的样子:

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

有什么问题?

6 个答案:

答案 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?