我在锚标记内有一个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;
如您所见,click事件仍然传播到锚标记。相反,如果我使用e.preventDefault()
那么这似乎会阻止冒泡。为什么stopPropagation
阻止点击事件的传播?
答案 0 :(得分:3)
e.preventDefault()
就是你想要的。您所描述的内容不是事件传播的结果,而是您尝试阻止的链接默认行为的结果。
考虑以下示例:
$('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;
如果没有调用e.stopPropagation()
,则会调用锚点本身的click
处理程序,并且您将获得alert
。