vue事件修饰符prevent、self、native
本博客编辑总监博主:博客链接
编辑人本博主:博客链接
v-on事件
v-on指令用于绑定事件,例如:
v-on指令简写:v-on:click="show" 可以简写为 @click="show"
v-on:mouseover="show" 可以简写为 @mouseover="show"
v-on事件修饰符
prevent
<!-- 阻止跳转行为 -->
<div id="box"><div @click="alert1()"><a href="/#" @click.prevent="alert2()">a标签<div @click="alert3()">div标签</div></a></div>
</div>
执行效果如下:
点击 a标签 ,弹框,不跳转
点击 div标签,弹框,不跳转
也就是 在click事件绑定 prevent 修饰符阻止页面跳转。
self
<!-- 阻止事件冒泡点击行为,主观性 -->
<div id="box"><div @click="alert1()"><a href="/#" @click.self="alert2()">a标签<div @click="alert3()">div标签</div></a></div>
</div>
执行效果如下:
点击 a标签 弹框,跳转
点击 div标签,不弹框,跳转
也就是 self 修饰符 只阻止事件冒泡的事件行为,不阻止自身的事件行为,具有主观性。
native
<!-- 阻止默认事件行为 -->
<div id="box"><div @click="alert1()"><a href="/#" @click.native="alert2()">a标签<div @click="alert3()">div标签</div></a></div>
</div>
点击 a标签,不弹框,跳转
点击 div标签,不弹框,跳转
也就是native修饰符阻止默认事件(点击)行为,既阻止自己事件行为,也阻止冒泡事件行为。
v-on事件修饰符组合分析(敲黑板、画重难点)
prevent.self
<!-- 官网:阻止所有点击 -->
<div id="box"><div @click="alerttt()"><a href="/#" @click.prevent.self="alertrrrr()">a标签<div @click="alertllll()">div标签</div></a></div>
</div>
点击 a标签,弹框,不跳转
点击 div标签,不弹框,不跳转
意思是:click prevent self 结合时,自己事件行为(点击 a标签)时,会执行 click(单击) 和 prevent(阻止跳转) 行为,不触发 self(阻止事件,即弹框),也就是 self 没有起到阻止弹框的作用,于是效果是:弹框,不跳转; 而事件冒泡(点击div标签)时,会执行 click prevent 和 self 三个关键字,效果就是:不弹框,不跳转。
self.prevent
<!-- 官网:阻止元素自身的点击 -->
<div id="box"><div @click="alerttt()"><a href="/#" @click.self.prevent="alertrrrr()">a标签<div @click="alertllll()">div标签</div></a></div>
</div>
点击 a标签,弹框,不跳转
点击 div 标签,不弹框,跳转
也就是 click self prevent 三者结合时,自己事件行为(点击 a标签)时,执行 click 和 prevent 行为,而事件冒泡时,会执行 click 和 self 行为。
native.prevent / prevent.native
<!-- 阻止默认行为 -->
<!-- native和prevent组合时,native执行了,prevent就不会执行,native优先级>prevent -->
<!-- 点击自己不显示,跳转;事件冒泡不显示,跳转-->
<div id="box"><div @click="alerttt()"><a href="/#" @click.native.prevent="alertrrrr()">a标签<div @click="alertllll()">div标签</div></a></div>
</div>
点击 a标签,不弹框,跳转
点击 div标签,不弹框,跳转
当 click native prevent 三者结合时,效果与 click native 两个修饰符相同,没有执行 prevent 修饰符。
总结分析
当事件修饰符组合使用时,需要注意优先级情况:
- prevent 在前时,修饰的是v-on 事件,不管是 自己事件行为还是冒泡事件行为,都会执行 prevent 行为,也就是阻止跳转。
- prevent 在后时,修饰的是 v-on 被 self 修饰后的 事件,当执行 self 行为时,不执行 prevent 行为, 当不执行 self 行为时,执行 prevent 行为。
- 只要有 self 修饰符时, 自己事件行为,就不会执行 self (阻止事件) 行为,也就是弹框,而冒泡会执行 self 行为,也就是不弹框。
- native 与其他结合使用时,不管顺序如何,和单独的 native 行为,效果都相同,也就是 事件中只要有 native 修饰,别的修饰符有不起作用了。
本篇博客为个人理解的总结,如有错误,请指正!
vue事件修饰符prevent、self、native相关推荐
- vue事件修饰符有哪些
vue 事件修饰符 1.prevent:阻止默认事件 2.stop:阻止事件冒泡 3.once:事件只触发一次 4.capture:使用事件的捕捉模式 5.self:只有event.target是当前 ...
- Vue 事件修饰符 详解
本人后端程序员,由于绑页面需要使用vue,在自学的过程中不懂事件修饰符,特此请教后才理解,在这提出我的分享,忘各位大神指正. vue官网上指出: 在事件处理程序中调用 event.preventDef ...
- Vue事件修饰符(prevent,stop,once,capture,self)
1.Vue的事件修饰符: 1.prevent 阻止默认事件(常用) 2.stop:阻止默认冒泡(常用) 3.once:事件只触发一次(常用) 4.capture:使用事件的捕获模式 5.self:只有 ...
- 【每日知识】Vue事件修饰符.native
问题 在写代码时注意到click事件的native修饰符,如下: <el-dropdown-item divided @click.native="logout">&l ...
- vue事件修饰符.native
问题 在写代码时我注意到click事件的native修饰符,如下: <el-dropdown-item divided @click.native="logout">& ...
- vue学习:事件传递(冒泡和捕获),事件委托,jquery中的事件委托,$event 获取元素,vue事件修饰符
事件传递 ----冒泡和捕获 DOM事件标准定义了两种事件流,这两种事件流分别是捕获和冒泡. 和许多Web技 术一样,在它们成为标准之前,Netscape和微软各自不同地实现了它们.Netscape选 ...
- vue 事件修饰符 按键修饰符
事件修饰符 在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求. .stop 阻止单击事件传播 即阻止了事件冒泡, ...
- Vue事件修饰符的总结
分为六点: 1.prevent 阻止默认行为(常用) 2.stop 阻止事件冒泡(常用) 3.once 事件值触发一次(常用) ...
- vue 事件修饰符与按键修饰符
事件修饰符 在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求.尽管我们可以在方法中轻松实现这点,但更好的方式是: ...
- Vue2.0学习笔记:Vue事件修饰符的使用
事件处理 如果需要在内联语句处理器中访问原生DOM事件.可以使用特殊变量$event,把它传入到methods中的方法中. 在Vue中,事件修饰符处理了许多DOM事件的细节,让我们不再需要花大量的时间 ...
最新文章
- vb excel 整行删除_6个Excel表格制作技巧,熟练掌握工作效率加倍,再也不用加班...
- MSP430常见问题之FLASH存储类
- SpringBoot的构造方法中使用@AutoWird注入的类会报错null
- lua如何打印行号_Lua 字符串处理
- Android开发之将AndroidX项目改为非androidX(android.v7.support)的方法
- Caddi Programming Contest 2021(AtCoder Beginner Contest 193) 题解
- php 实现百度坐标转换,PHP实现腾讯与百度坐标转换
- 理解asp.net中DropDownList编辑数据源,绑定数据库数据。
- 设计模式(11)——组合模式
- 2019.6.18 区块链论文翻译
- android plaid,Plaid 开源库学习
- 74ls138和与非门设计全减器,用74LS138和门电路设计1位二进制全减器
- 西门子PID完整程序西门子PLC 1200和多台G120西门子变频器Modbud RTU通讯
- lsb隐写的基本方法matlab,GitHub - RGNil/RG_LSB: 利用python实现LSB隐写算法(我自己改进了LSB算法),并进行了性能分析(psnr、错误率、鲁棒性)...
- 理解Windows操作系统的KMS与MAK密钥
- 超级好上手的告白小程序
- Win10无法开机修复方法
- [FineReport]高级条件分组、斜线、自动查询、控件编辑属性、条件属性
- forward(转发)和redirect(重定向)有什么区别
- springboot+音乐播放小程序 毕业设计-附源码191730