Vue:@click.stop -- 阻止事件向父级元素传递

这篇具有很好参考价值的文章主要介绍了Vue:@click.stop -- 阻止事件向父级元素传递。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近遇到这么一个问题:有一个父div,包含一个子div。要求单击父div时执行fun()函数,而单击子div时不执行fun()函数。

可以使用 @click.stop 阻止事件向父级元素传递

1 @click.stop介绍

在Vue中,@click是一个指令,用于监听元素的点击事件。@click.stop是其中的一个修饰符,它的作用是阻止事件冒泡,即阻止事件向父级元素传递。

具体来说,当一个元素被点击时,它所处的DOM层级结构中的所有父级元素都会接收到该事件。如果在父级元素上也绑定了类似的@click事件,那么这个事件也会被触发。而使用了@click.stop修饰符的元素,当它被点击时,事件将不会再向父级元素传递。这可以避免事件被不必要地多次触发。

2 任何事件都不触发

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

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

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

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

在上面的示例中,当点击按钮时,只会触发doSomethingElse方法,不会触发doSomething方法。文章来源地址https://www.toymoban.com/news/detail-516172.html

到了这里,关于Vue:@click.stop -- 阻止事件向父级元素传递的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【精简】Vue 一个@click时间绑定多个点击事件

    多个方法之间使用逗号分隔(经测试其实逗号和分号都可以) 经过debugger测试 好像m1和m2执行是按@click写的顺序来执行的并非异步

    2024年02月02日
    浏览(47)
  • Vue中阻止事件冒泡

    vue中阻止时间冒泡: @click.stop : 阻止事件冒泡 @click.prevent : 阻止事件默认行为 @click.self : 事件只作用在元素本身,而不是其子元素。

    2024年02月13日
    浏览(30)
  • 快速了解4种阻止事件冒泡的方法(原生js阻止,vue中使用修饰符阻止)

    前端结构 事件冒泡:clickSonBox事件发生时clickFatherBox事件也被触发了 此时点击子盒子 对话框弹出两次 方法1:使用js阻止事件冒泡 方法2:使用事件修饰符stop 绑定事件时,使用stop修饰符阻止事件冒泡 方法3:使用事件修饰符self 绑定事件时,使用self修饰符 表示只在本元素被点

    2024年02月16日
    浏览(26)
  • 记录--@click和@click.native有什么区别,如何阻止第三方组件内部的冒泡

    vue @click.native 原生点击事件: 1,给vue组件绑定事件时候,必须加上native ,不然不会生效(监听根元素的原生事件,使用 .native 修饰符) 2,等同于在子组件中: 子组件内部处理click事件然后向外发送click事件: $emit(\\\"click\\\".fn) 不多说看代码: 直接在封装组件上使用@click,看看

    2024年02月10日
    浏览(37)
  • Vue对Element中的el-tab-pane添加@click事件无效

    发现问题 使用element-UI中的el-tabs的时候 想给每一个tab绑定事件,并传递id值,但是这样子绑定点击tab时click事件无效。 查看官方文档发现,官方文档只提供了关于tab的点击事件,而tab-pane没有点击事情。 解决方法 在el-tab-pane中加入插槽,tab的名称为插槽的内容,此时点击每个

    2024年02月16日
    浏览(39)
  • 【2023-09-01】vue中自定义按钮设置disabled属性后,异常触发click事件

    项目中自定义按钮,使用a标签实现。设置disabled属性后,点击可以触发click事件。 由于各种原因,项目中并未使用成熟的第三方组件库,例如element-ui,ant-design。大多数组件是自己封装的,部分借鉴了原项目中jQuery、bootstrap实现。 列表中需要根据数据中某个变量的值,控制该

    2024年02月10日
    浏览(38)
  • vue 子组件 emit传递事件和事件数据给父组件

    1 子组件通过emit 函数 传递事件名\\\'init-complete 和 数据dateRange 2  父组件 创建方法 接收数据 3 父组件 创建的方法 和 子组件事件绑定 4 完整代码 4.1 子组件 4.2 父组件 ps: 不能传递list 类型

    2024年02月11日
    浏览(30)
  • vue实现axios和事件Bus等父子组件的事件传递实现

    发送请求的配置 vue.config.js vue中bus的事件线传递接收 路由守卫中,使用bus事件传递信息,弹出事件 父子组件之间的事件传递接收 接收组件的信息

    2024年04月11日
    浏览(23)
  • vue子元素点击事件与父元素点击事件冲突 子元素点击事件不触发

    在vue项目中,子元素有点击事件,父元素也有点击事件,当点击子元素时往往触发的是父元素的点击事件,产生冲突,怎样解决这个问题呢? 解决方法:使用vue中的事件修饰符 vue为 v-on 提供了 .stop、.prevent、.self、.once等事件修饰符,当遇到子元素与父元素的事件冲突,就要

    2024年02月14日
    浏览(28)
  • uniapp小程序 用@touchmove.stop.prevent=““阻止滑动穿透 但是会影响弹出层内容滑动

    之前加 scroll-view 也不好使 向上滑动也不动 后来加了css  .scroll-view{max-height: 608rpx; overflow-y: scroll;} ******必加******

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包