已解决 - 链接顶部的 html 按钮

Posted

技术标签:

【中文标题】已解决 - 链接顶部的 html 按钮【英文标题】:SOLVED - html Button on top of link 【发布时间】:2020-06-25 21:57:59 【问题描述】:

嘿,我有一个由 Link 组件包裹的 div,在该 div 内我有更多按钮,但问题是,当我单击内部较小的按钮时,我实际上也单击了 Link 组件,所以我被重定向,这不是我想要的……我该如何解决这个问题?

似乎链接和按钮都被点击了,但如果我只想点击按钮,我想避免父链接。

我的意思是,当您单击链接时,该链接用于导航到某个 URL。将元素放入其中以执行其他任务。就像博客文章一样,您单击父级它会重定向您,但在子级上,该按钮将允许您将其删除

在 nodejs react 中对此进行编码,所以我使用 onClick 事件

例子

<Link to="/blog-post">
  <div className="link-post-container">
      ...blog
      <button className='deleteButton'></button>
  </div>
</Link>

我已经在按钮上尝试了event.stopPropagation,但它似乎仍然没有做任何事情。是不是因为链接是href 而不是onClick

解决方案

所以使用下面的一些可能的解决方案,我开始搞乱并在 deleteButton 的 onClick 中注意到,如果我添加以下内容,它可以工作:

event.preventDefault()

这样,由于 href 的重定向不再发生,只会发生按钮单击事件

【问题讨论】:

【参考方案1】:
const handleClick = event => 
  event.stopPropagation()
  // then write rest of your onclick code 



<button className='deleteButton' onClick=handleClick></button>

【讨论】:

我试过了,但还是不行,是不是因为父母不是onClick而是href【参考方案2】:

点击事件在 DOM 树中从按钮向上传播,直到到达根节点(简化解释 - 您可以了解更多关于事件传播的信息here)。这就是为什么链接也会注册它并运行它的 onclick 处理程序,将您重定向到另一个站点。

您可以在按钮的 onClick 处理程序中调用 event.stopPropagation() 来阻止事件到达封装链接。

source

【讨论】:

太棒了,读起来很棒,如果链接不是 onClick 而是 href,那还能用吗?我试过了,但无法让它工作。它仅适用于 onClick 吗?我看看我是否应该将链接从 href 更改为 onClick

以上是关于已解决 - 链接顶部的 html 按钮的主要内容,如果未能解决你的问题,请参考以下文章

解决“MySQL 服务器已消失”错误

已解决:PyQt5 用键盘敲击按钮

已解决:在瓷砖地图中移动角色时锚控制按钮?

已制作好的Word文档里面的页码,显示{PAGE},不显示数字,怎么解决?

lnmp 搭建后,nginx下php文件404但是html文件正常访问已解决

问题解决——SolidWorks 已停止工作 (Windows7 + SolidWorks 2010 SP0.0)