Javascript 如果有两个元素可单击,如何强制浏览器仅处理顶部链接?

Javascript 如果有两个元素可单击,如何强制浏览器仅处理顶部链接?,javascript,jquery,html,css,anchor,Javascript,Jquery,Html,Css,Anchor,假设我有以下代码: <div onclick='location.href="http://www.example.com/"'> <a href='#' onclick='alert("blah")'>click</a> </div> 是否有一种方法仅在我单击“单击”文本时计算锚定,而不计算div的onclick?可以通过从锚定的单击事件处理程序返回false来停止事件传播 <div onclick='location.href="h

假设我有以下代码:

<div onclick='location.href="http://www.example.com/"'>
  <a href='#' onclick='alert("blah")'>click</a>
</div>

是否有一种方法仅在我单击“单击”文本时计算锚定,而不计算div的onclick?

可以通过从锚定的单击事件处理程序返回false来停止事件传播

<div onclick='location.href="http://www.example.com/"'>
  <a href='#' onclick='alert("blah"); return false;'>click</a>
</div>

是一个更干净的解决方案。

您可以通过从锚点的单击事件处理程序返回false来停止事件传播

<div onclick='location.href="http://www.example.com/"'>
  <a href='#' onclick='alert("blah"); return false;'>click</a>
</div>
是一种更清洁的解决方案。

请参阅

event.cancelBubble是IE的 event.stopPropagation是W3C return false用于取消href链接。 看

event.cancelBubble是IE的 event.stopPropagation是W3C return false用于取消href链接。
return false不会停止事件传播,它只会取消href链接。关于常规JS;我不熟悉jQuery,它也不适合jQuery。返回false只会停止该特定元素的执行,它不会影响可能也有事件的任何其他元素。这就像在函数中返回false一样。它不会因为一个函数返回false而停止执行整个页面,它只会停止该函数。向click handler函数添加一个事件参数,并在函数体中调用event.preventDefault以防止元素的默认功能。实际上返回false会停止传播并防止默认值。@请尝试。return false绝对停止事件传播。尝试注释return false并查看差异。return false不会停止事件传播,它只会取消href链接。关于常规JS;我不熟悉jQuery,它也不适合jQuery。返回false只会停止该特定元素的执行,它不会影响可能也有事件的任何其他元素。这就像在函数中返回false一样。它不会因为一个函数返回false而停止执行整个页面,它只会停止该函数。向click handler函数添加一个事件参数,并在函数体中调用event.preventDefault以防止元素的默认功能。实际上返回false会停止传播并防止默认值。@请尝试。return false绝对停止事件传播。试着注释return false,看看它们之间的区别。我相信你可以使用更好、更简单的替代方法,而不是将onClick事件放在同样有onClick事件的元素中。如果你真的需要这个函数,你真的应该重新考虑你的设计。我相信你可以使用更好更简单的替代方案,而不是把onClick事件放在同样有onClick事件的元素中。如果你真的需要这个功能,你真的应该重新考虑你的设计。
$(function() {
  $("#someid").click(function() {
    window.location.href = "http://www.example.com";
  });
  $("#someid a").click(function() {
    alert("blah");
    return false;
  });
});
<div onclick='location.href="http://www.example.com/"'>
  <a href='#' onclick='alert("blah"); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false;'>click</a>
</div>