如何在RouterLink中包含一个按钮,以便在按钮单击时不会发生导航

Posted

技术标签:

【中文标题】如何在RouterLink中包含一个按钮,以便在按钮单击时不会发生导航【英文标题】:How to enclose a button in RouterLink, so that the navigation does not occur on button click 【发布时间】:2021-01-31 16:23:21 【问题描述】:

假设,我有以下标记:

<RouterLink tag="div" to="/somepath">
    <p>Lorem ipsum dolor sit amet.</p>
    ...
    <button>A button</button>
</RouterLink>

我使用tag="div",因为在a 元素is not valid html5 中嵌套了&lt;button&gt;

使用此标记,单击@​​987654327@ 内的任意位置(包括段落和按钮)将导致导航。

但我的要求是点击按钮不会导致导航,但点击其他元素会。

所以,我使用div@click 处理程序来检查单击的元素是按钮还是它的后代,如果不是,则仅导航:

<div @click="navigateSomewhere">
    ...
</div>
export default 
  methods: 
    navigateSomewhere($event) 
      if(!$event.closest("button"))
        this.$router.push("/somePath")
    
  

但我想知道是否有更清洁的方法。

我还创建了一个 MCVE:https://codesandbox.io/s/vue-routerlink-button-3dlyx。

【问题讨论】:

【参考方案1】:
<button @click.prevent="">A button</button>

【讨论】:

【参考方案2】:

这是因为按钮在“点击区域”下,不是targettable,尝试将位置相对和z-index:99设置为按钮,让我知道

【讨论】:

我已经尝试过您的解决方案,但很遗憾,它不起作用 你能发布你的“构建”版本的代码吗?所以我可以试试,因为我认为是 css 相关的 当然,我正在创建 MCVE 刚刚编辑了问题以包含有关 MCVE 的信息

以上是关于如何在RouterLink中包含一个按钮,以便在按钮单击时不会发生导航的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 QTabWidget:如何在类和同一窗口中包含的选项卡之间切换?

我是不是可以在按 ID 分组的 tablix 行中包含子报表?

翻转视图设置中包含的视图

如何在 C# 摘要中包含 html 标记,以便将其作为文本处理(不解析为 XML)?

如何在 Tkinter 中的一个按钮中包含图像+文本

如何在禁用管道中包含“jquery_ujs”以便能够对表单使用“remote:true”?