jquery中的e.stopPropagation()是否适用于锚标记

时间:2012-01-21 10:10:13

标签: javascript jquery

我希望阻止来自锚标记内的元素的eventpropogation我试图使用e.stopPropagation();它似乎不起作用是否可能或者我只是浪费时间请帮助我离开这里 javascript是:

$(document).ready(function(){
    $('.alink .p').click(function(e){
    alert("hi");
    e.stopPropagation();  
});

html是:

<div>
    <a href="http://google.com" class="alink" >Google links
          <p class="p">Another Links to prevent default</p>
    </a>
</div>

感谢您宝贵的时间

5 个答案:

答案 0 :(得分:26)

event.stopPropagation()停止将事件传递给DOM结构中的处理程序,该元素最初触发了事件。但是,它不会阻止已经触发的行动。

您应该使用event.preventDefault() 来停止上述默认操作。

<强>来源:

答案 1 :(得分:3)

描述

  

它不会停止任何默认行为(例如链接点击),除了此方法之外,您可能还需要考虑使用event.preventDefault()

     

event.stopPropagation()仅适用于事件处理程序,而非默认行为。

     

event.preventDefault()如果调用此方法,则不会触发事件的默认操作。

您的脚本中有一些拼写错误,document没有"document"

查看示例和此jsFiddle Demonstration

示例

$(document).ready(function(){
    $('.alink, .alink > .p').click(function(e){
        e.preventDefault();
        e.stopPropagation();
        alert("hi");
    });
});

更多信息

答案 2 :(得分:0)

试试这个

$(document).ready(function(){
    $('.alink .p').click(function(e){
        e.preventDefault();
        e.stopImmediatePropagation();
        alert("hi");
        return false;
    });
});

答案 3 :(得分:0)

您应该使用 - e.preventDefault()来停止默认行为。 stopPropagation用于停止事件冒泡。

答案 4 :(得分:0)

你错过了括号括号,不是吗?

$('document').ready(function(){
    $('.alink .p').click(function(e){
    alert("hi");
    e.stopPropagation();  
});

修复括号,然后改为使用e.preventDefault()。