Vue中@click.stop和@click.prevent实例详解

 更新时间:2024年04月02日 08:20:22   作者:千川Maple  
当我们使用Vue.js开发前端应用时,经常会在模版中使用@click指令来响应用户的点击事件,这篇文章主要给大家介绍了关于Vue中@click.stop和@click.prevent的相关资料,需要的朋友可以参考下

一、@click.stop(阻止事件冒泡)

@click.stop:阻止事件冒泡,即阻止点击事件从子组件向父组件传播。

案例:我们在父元素中添加了一个click事件A,并且在其下的子元素中也添加了一个click事件B。

这时我想点击子元素触发子元素的点击事件,但实际上会先触发子组件的事件,然后触发父组件的事件。

<div class='handle-box' @click="clickBox">
		<div @click="handleClick('新增')"><text>新增</text></div>
		<div @click="handleClick('修改')"><text>修改</text></div>
		<div @click="handleClick('删除')"><text>删除</text></div>
</div>

需要使用阻止事件冒泡(也即阻止点击事件继续传播)来解决此问题,

将子组件中的@click改为@click.stop即可:

<div class='handle-box' @click="clickBox">
		<div @click.stop="handleClick('新增')"><text>新增</text></div>
		<div @click.stop="handleClick('修改')"><text>修改</text></div>
		<div @click.stop="handleClick('删除')"><text>删除</text></div>
</div>

二、@click.prevent(阻止事件的默认行为)

@click.prevent:阻止事件的默认行为。它会阻止触发dom的原始事件,而只执行我们自定义的事件。

例如:在代码里写入一个<a>标签,在点击<a>标签时,会默认触发一次跳转,跳转到目标URL:

<div>
	<a href="http://www.baidu.com" rel="external nofollow"  rel="external nofollow"  target='_blank'>百度</a>
</div>

但如果我们不想让它跳转,而是在点击<a>标签时执行我们的自定义方法,那就需要用到@click.prevent啦!用法如下:

<div>
	<a href="http://www.baidu.com" rel="external nofollow"  rel="external nofollow"   target='_blank' @click.prevent='handleClick('修改')'>百度</a>
</div>

这时再点击<a>标签,就不会跳转到目标URL啦,而是会执行我们自定义的handleClick(‘修改’)事件。

附:Vue @click.stop阻止事件向祖先元素传递(事件冒泡)

任何事件都不触发

<template>
  <div @click="fun">
    <div @click.stop>
      <!--子div-->
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    fun() {
      // 点击父div时执行的功能
      console.log('单击了父div');
    },
  },
}
</script>

不触发父级事件,触发属于自己的事件

<template>
  <div @click="doSomething">
    <button @click.stop="doSomethingElse">不会触发父级元素的点击事件</button>
  </div>
</template>
<script>
export default {
  methods: {
    doSomething() {
      console.log('doSomething')
    },
    doSomethingElse() {
      console.log('doSomethingElse')
    }
  }
}
</script>

总结

到此这篇关于Vue中@click.stop和@click.prevent详解的文章就介绍到这了,更多相关Vue中@click.stop和@click.prevent内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue.js中关于点击事件方法的使用(click)

    vue.js中关于点击事件方法的使用(click)

    这篇文章主要介绍了vue.js中关于点击事件方法的使用(click),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 详解Nuxt.js中使用Element-UI填坑

    详解Nuxt.js中使用Element-UI填坑

    这篇文章主要介绍了详解Nuxt.js中使用Element-UI填坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 详解VueJS应用中管理用户权限

    详解VueJS应用中管理用户权限

    本篇文章主要给大家讲述了VueJS应用中管理用户权限的详细过程和方法,以及相关的代码展示,需要的朋友参考下吧。
    2018-02-02
  • 在vue.js中抽出公共代码的方法示例

    在vue.js中抽出公共代码的方法示例

    这篇文章主要给大家介绍了在vue.js中抽出公共代码的方法,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • Vue Canvas实现电子签名

    Vue Canvas实现电子签名

    这篇文章主要为大家详细介绍了Vue Canvas实现电子签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Vue使用vm.$set()解决对象新增属性不能响应的问题

    Vue使用vm.$set()解决对象新增属性不能响应的问题

    这篇文章主要介绍了Vue使用vm.$set()解决对象新增属性不能响应的问题,为了解决这个问题,Vue提供了一个特殊的方法vm.$set(object, propertyName, value),也可以使用全局的Vue.set(object, propertyName, value)方法,需要的朋友可以参考下
    2023-05-05
  • Vue3.2 中新出的Expose用法一览

    Vue3.2 中新出的Expose用法一览

    这篇文章主要介绍了Vue3.2 中新出的 Expose 是做啥用的,新的expose方法是非常直观的,而且很容易在我们的组件中实现,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Vue+Bootstrap实现简易学生管理系统

    Vue+Bootstrap实现简易学生管理系统

    这篇文章主要为大家详细介绍了Vue+Bootstrap实现简易学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • Vue3项目pc端浏览器样式正常但移动端部分样式失效问题的解决方法

    Vue3项目pc端浏览器样式正常但移动端部分样式失效问题的解决方法

    这篇文章主要介绍了Vue3项目pc端浏览器样式正常但移动端部分样式失效问题的解决方法,文中通过图文讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-07-07
  • vue中如何实现复制内容到剪切板详解

    vue中如何实现复制内容到剪切板详解

    有些业务需求需要点击按钮复制链接,下面这篇文章主要给大家介绍了关于vue中如何实现复制内容到剪切板的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10

最新评论