vue中父元素点击事件与子元素点击事件冲突

  • 在做vue项目的时候,遇到子元素有点击事件,父元素也有点击事件,当点击子元素时往往触发的是父元素的点击事件,产生冲突,怎样解决这个问题呢?这就用到vue事件中的事件修饰符,官网地址https://cn.vuejs.org/v2/guide/events.html#%E4%BA%8B%E4%BB%B6%E4%BF%AE%E9%A5%B0%E7%AC%A6。
  • Vue.js 为 v-on 提供了事件修饰符 .stop、.prevent、.capture、.self、.once、.passive,我们要处理子元素与父元素的事件冲突就要阻止事件传递的产生,而事件修饰符 .stop 的作用是阻止事件继续传播,那么我们需要在子元素的事件上添加事件修实符 .stop 来阻止事件传播。如下代码:
 <!-- html --><li class="settingImgLi" :class="{active:index==isActive}" v-for="(image,index) in data.consultList" :key="index"<!--父元素事件-->@click="handleCurrentItem(image,index)"><div style="width:100%;height:100%;position: relative;overflow: hidden;"><img width="100%" height="100%" :src="data:image.image" alt=""><div class="img-item-selected"><Icon type="md-checkmark" /></div></div><!-- 子元素事件--><div class="img-item-close" @click.stop="removePic(index)"><i class="el-icon-circle-close"></i></div></li><!-- js -->handleCurrentItem(image, index) {console.log("父元素")},removePic(index){console.log("子元素")},
  • 事件修饰符
<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a><!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form><!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a><!-- 只有修饰符 -->
<form v-on:submit.prevent></form><!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div><!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。(官网有介绍此段)

vue中父元素点击事件与子元素点击事件冲突相关推荐

  1. vue中进入页面,自动触发一次点击事件

    vue中进入页面,自动触发一次点击事件 html script 一进去页面,我肯定是要进去就能看到数据,而不是需要点击选项1才得到数据,解决办法就是直接在created()中调用 html <d ...

  2. vue中父传子,父传孙说明

    先来说一下,vue中父传往子组件用v-bind绑定属性,在子页面用props接收,子传往父的用$emit this.$emit('change',data),data就是你要传的数据,change为父 ...

  3. 总结vue中父向子,子向父以及兄弟之间通信的几种方式

    子向父方式1:通过props,如例子中子组件test1.vue向父组件App.vue传值 App.vue代码 <template><div id="app"> ...

  4. vue中手写动态渲染左右滚动菜单栏 点击居左 以及设置scrollLeft属性设置无效的原因解决

    vue中可能会碰到无法使用框架的问题,此时需要手写左右滚动的滑动菜单栏,并且头部或者底部还有对应的标题点击定位.此时应该怎么做呢? (1)下面看结构: <div class="cour ...

  5. Vue中使用andt组件a-table列表数据根据点击的表头进行升/降排序-案例

    官方示例-API链接 数据根据当前点击的内容进行升降排序 使用步骤 数据量过少,可以使用前端排序方式 //官方案例 <template><a-table :columns=" ...

  6. 一个页面两个或多个swiper vue中一个页面多个swiper互相干扰 swiper轮播冲突

    在vue中如何处理同一个页面中有多个swiper,首先我们需要分2中情况: 1.如果在vue中采用 Vue-Awesome-Swiper,如果采用这种方式的话,可以给每个swiper组件添加一个cla ...

  7. vue中父传子和子传父,传值方法

    1.关于传值的规则 props值是对象的时候,传递的属性以对象的形式保存在props里面,对象里面的字段可以对传递的属性进行验证或者添加一些匹配验证规则. <div id="app&q ...

  8. Vue中父组件调用子组件的方法

    场景 SpringBoot+Vue+Echarts实现选择时间范围内数据加载显示柱状图: SpringBoot+Vue+Echarts实现选择时间范围内数据加载显示柱状图_BADAO_LIUMANG_ ...

  9. vue中父组件怎么调用子组件

    前言 前段时间,写了个地址的控件,封装成了一个子组件,在其他页面共用. 原文地址:vue利用级联选择器实现全国省市区乡村五级菜单联动 然后当时出现了个bug,也没有太注意,后来才发现的.就是重置不了地 ...

最新文章

  1. 《Arduino开发实战指南:LabVIEW卷》——3.5 LabVIEW的程序结构
  2. RetinaNet+focal loss
  3. JavaScript 灯泡暗亮
  4. amazon 使用密码登录_我们通过使用Amazon SageMaker大规模提供机器学习模型学到了什么...
  5. Nacos命名空间配置_每个人用各自自己的命名空间---SpringCloud Alibaba_若依微服务框架改造---工作笔记001
  6. CentOS 修改主机名(host)
  7. [数据仓库]基础理论笔记
  8. 如何让WebStorm正常显示出中文提示,使得中文能够正常输入,请看这里
  9. LIVE MINI ESP32开发板教程系列(四)NeoPixel + ws2812b实现炫彩显示
  10. 商业计划书PPT模板
  11. Linux发行版Ubuntu教程
  12. 网络打印机怎么扫描到计算机,怎么用打印机扫描文件-富士施乐SC2020复印机设置网络扫描到计算机(SMB)...
  13. java 有多少种锁_java有哪些锁?java锁种类盘点
  14. Android Bluetooth HCI log 详解
  15. [转]三点估算/PERT历时估算
  16. 剑指Offer66题之每日6题 - 第六天
  17. CI/CD流水线技术方案
  18. 2022年新年焰火代码
  19. 使用Matlab定制伯德图坐标纸
  20. C# 反射实例化对象

热门文章

  1. linux常用命令(包含系统命令)
  2. 虚拟环境Vmware下改变Linux(CentOS7)IP地址
  3. Android Studio飘红错误
  4. 软渲染器(Directx11)三之世界矩阵,相机变换矩阵,透视投影矩阵,透视除法,视口变换矩阵
  5. 第五章 Spring Boot的数据库编程
  6. 数字图像处理学习路线大体介绍
  7. 网络编程:使用tcp协议实现服务器与客户端交互
  8. 车牌识别EasyPR(2)——车牌颜色定位与偏斜扭转
  9. 第一位让我敬佩的学者张维迎
  10. 问题解决-----如何从windows10向ubuntu传输大数据的文件(大于等于50M)