单击子div时如何停止父href标签的重定向?

Posted

技术标签:

【中文标题】单击子div时如何停止父href标签的重定向?【英文标题】:how to stop redirection of parent href tag when clicked on child div? 【发布时间】:2014-09-03 18:27:14 【问题描述】:

我有以下结构

代码

 <a href="blah.html" class="re-direct">
    <div class="1div"></div>
    <div class="2div">
       <div class="click" data-id="text">click</div>
    </div>
 </a>
 <script>
  $(document).on('click',".click",function() alert($(this).data('id')) )
 </script>

上面的代码工作正常,但它重定向到页面 blah.html 我如何阻止它重定向?

【问题讨论】:

【参考方案1】:

您需要阻止点击事件在 DOM 中向上传播到 a 元素,同时还要阻止链接的默认行为:

$(document).on('click', ".click", function(e) 
  e.stopPropagation();
  e.preventDefault();
  console.log($(this).data('id'))
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<a href="blah.html" class="re-direct">
  <div class="1div"></div>
  <div class="2div">
    <div class="click" data-id="text">click</div>
  </div>
</a>

【讨论】:

是的,现在它可以工作,但会返回相同的错误工作? @RoryMcCrossan 在链接之外有没有 preventDefault() 的使用? @Mr.coder 是的,虽然返回 false 会杀死函数返回的所有内容,这可能不是预期的行为。不过在这种情况下应该没问题。 @Claudiu 是的。例如,它可以用于submit 事件以停止表单提交。

以上是关于单击子div时如何停止父href标签的重定向?的主要内容,如果未能解决你的问题,请参考以下文章

如何停止从 HTTP 到 HTTPS 的重定向

Webview 重定向问题

单击子锚点时,如何防止触发父级的 onclick 事件?

如何撑开父元素,让父元素div自动适应高度的问题

仅在父单击而不是子单击时触发事件

我们如何使放置在链接标签内的 div 不被导航