为什么不停止传播停止点击事件的冒泡?

时间:2017-05-04 16:15:09

标签: javascript jquery html

我在锚标记内有一个span标记。单击span时,我希望链接不被跟踪,也就是说我想停止点击span来触发(冒泡)点击锚标记。为此,我使用stopPropagation:



$("a span").click(function(e){
  e.stopPropagation();      
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://stackoverflow.com">
  hello <span> click here </span>
</a>
&#13;
&#13;
&#13;

如您所见,click事件仍然传播到锚标记。相反,如果我使用e.preventDefault()那么这似乎会阻止冒泡。为什么stopPropagation阻止点击事件的传播?

1 个答案:

答案 0 :(得分:3)

e.preventDefault()就是你想要的。您所描述的内容不是事件传播的结果,而是您尝试阻止的链接默认行为的结果。

考虑以下示例:

&#13;
&#13;
$('a span').click(function(e) {
  e.stopPropagation();      
});

$('a').click(function(e) {
  alert('propagated!');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://stackoverflow.com">
  hello <span> click here </span>
</a>
&#13;
&#13;
&#13;

如果没有调用e.stopPropagation(),则会调用锚点本身的click处理程序,并且您将获得alert