事件修饰符:

+ .stop 阻止冒泡

+ .prevent 阻止默认事件

+ .capture 添加事件侦听器时使用事件捕获模式

+ .self 只当事件在该元素本身(比如不是子元素)触发时触发回调

+ .once 事件只触发一次

.stop 阻止冒泡

    <!--stop  阻止冒泡  -->
<!-- 当点击button事件后,首先执行的是btnHandle事件,在执行divHandler事件 -->
<div class="box" @click="divHandler">
<!--<input type="button" value="戳他" @click.stop="btnHandler"> 阻止该事件冒泡 -->
<input type="button" value="戳他" @click="btnHandler">
</div> <script src="./lib/vue-2.4.0.js"></script>
<script> var vm=new Vue({
el:'.box',
data:{ },
methods:{
divHandler(){
alert('触发了divHandler事件');
},
btnHandler(){
alert('触发了btnHandler事件');
}
}
});

.prevent 阻止默认行为

 <!-- .prevent 阻止默认行为 -->
<!-- 当点击有问题去百度,的时候触发了linkHandler事件,同时也直接去百度了 -->
<!-- <a href="http://www.baidu.com" @click.prevent='linkHandler'>有问题去百度!</a> 阻止去打开百度行为 -->
<div class="box" @click="divHandler">
<input type="button" value="戳他" @click="btnHandler">
<a href="http://www.baidu.com" @click.prevent='linkHandler'>有问题去百度!</a>
</div> <script src="./lib/vue-2.4.0.js" ></script>
<script> var vm=new Vue({
el:'.box',
data:{ },
methods:{
divHandler(){
alert('触发了divHandler事件');
},
btnHandler(){
alert('触发了btnHandler事件');
},
linkHandler(){
alert("触发了linkHandler事件");
} }
});

.capture 实现捕获触发事件的机制

  

 <!-- .capture 实现捕获触发事件机制 -->
<!-- 当点击btn按钮会触发btnHandler事件,在触发divHandler事件,利用capture实现从外到内的事件 -->
<!-- <div class="box" @click.capture="divHandler"> 实现先divHandler在btnHandler -->
<div class="box" @click.capture="divHandler">
<input type="button" value="戳他" @click="btnHandler">
<a href="http://www.baidu.com" @click='linkHandler'>有问题去百度!</a>
</div> <script src="./lib/vue-2.4.0.js" ></script>
<script> var vm=new Vue({
el:'.box',
data:{ },
methods:{
divHandler(){
alert('触发了divHandler事件');
},
btnHandler(){
alert('触发了btnHandler事件');
},
linkHandler(){
alert("触发了linkHandler事件");
} }
});
</script>

.self 实现只有点击当前元素时候,才会触发事件处理函数

.self 只会阻止自己身上冒泡行为的触发,并不会真正阻止 冒泡的行为

  

<div class="outer" @click="div2Handler">
<div class="inner" @click.self="div1Handler">
<input type="button" value="戳他" @click="btnHandler">
</div>
</div> <script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {
div1Handler() {
console.log('这是触发了 inner div 的点击事件')
},
btnHandler() {
console.log('这是触发了 btn 按钮 的点击事件')
},
linkClick() {
console.log('触发了连接的点击事件')
},
div2Handler() {
console.log('这是触发了 outer div 的点击事件')
}
}
});
</script>

.once 只触发一次事件处理函数

  

<a href="http://www.baidu.com" @click.prevent.once="linkClick">有问题,先去百度</a>

<script>
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {
div1Handler() {
console.log('这是触发了 inner div 的点击事件')
},
btnHandler() {
console.log('这是触发了 btn 按钮 的点击事件')
},
linkClick() {
console.log('触发了连接的点击事件')
},
div2Handler() {
console.log('这是触发了 outer div 的点击事件')
}
}
});

Vue指令之事件修饰符的更多相关文章

  1. vue指令与事件修饰符

    一.条件渲染指令 vue中提供了两个指令可以用于判断是否要显示元素,分别是v-if和v-show. 实例: <!DOCTYPE html> <html lang="en&q ...

  2. [vue]vue v-on事件绑定(原生修饰符+vue自带事件修饰符)

    preventDefault阻止默认行为和stopPropagation终止传递 event.preventDefault() 链接本来点了可以跳转, 如果注册preventDefault事件,则点了 ...

  3. 从零开始学 Web 之 Vue.js(一)Vue.js概述,基本结构,指令,事件修饰符,样式

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  4. vue中的事件修饰符

    vue提倡的是在方法中只有对数据的处理,所以提供了事件修饰符用于DOM的事件处理,常用的事件修饰符有以下几个: (1). stop:阻止冒泡(通俗讲就是阻止事件向上级DOM元素传递) 点击内层div的 ...

  5. 33、vue中的事件修饰符.stop、.prevent、.self、.capture、.once

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 怎样在 Vue 中使用 事件修饰符 ?

    Vue 中可以通过 v-on 来绑定事件监听函数, 不过事件会有许多额外情况, 比如 是否阻止冒泡 / 是否阻止重载 / 是否限制点击次数 / 是否可以通过按键触发 等等. 这时就需要使用到 事件修饰 ...

  7. vue学习(六) 事件修饰符 stop prevent capture self once

    //html <div id="app"> <div @click="divHandler" style="height:150px ...

  8. (二)咋使用VUE中的事件修饰符

    1,stop修饰符:阻止事件冒泡 首先我们要明确H5的事件是从内向外进行冒泡的,写一个简单的DEMO 当我们点击按钮时,事件从内向外冒泡,依次触发绑定的事件,控制台信息如下 现在我们在click后面添 ...

  9. 27.28. VUE学习之--事件修饰符之stop&capture&self&once实例详解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. Laya的位图文字

    参考: Laya文本 测试版本:Laya 2.1.1.1 大部分游戏都会用到位图文字,例如dnf的伤害数字. 白鹭的位图文字是美术提供0-9十张单张图片,由TextureMerger导出fnt+jso ...

  2. matlab学习笔记2--matlab的帮助

    一起来学matlab-matlab学习笔记2--matlab的帮助 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 感谢张 ...

  3. spring 多个切面如何有序执行

    Spring也能支持多个切面.当有多个切面时,它不会存在任何顺序,这些顺序代码会随机生成,但是有时候我们希望它按照指定的顺序运行. 在此之前要先定义一个切点方法,为此新建一个接口——MultiBean ...

  4. 【Leetcode_easy】970. Powerful Integers

    problem 970. Powerful Integers solution: class Solution { public: vector<int> powerfulIntegers ...

  5. 【Leetcode_easy】849. Maximize Distance to Closest Person

    problem 849. Maximize Distance to Closest Person solution1: class Solution { public: int maxDistToCl ...

  6. JSON Hijacking漏洞

    https://github.com/SkyLined/LocalNetworkScanner JS.利用浏览器漏洞当对方打开网址时,扫描对方内网信息 https://www.freebuf.com/ ...

  7. 未找到路径“ ”的控制器或该控制器未实现 IController。

    未找到路径“/Platform/t_spay_sub_mchno/Index”的控制器或该控制器未实现 IController. 从SVN复制了份代码修改,然后找不到控制器和页面.在项目属性-WEB- ...

  8. Input.GetMouseButtonDown 在fixedupdate中会出现丢失问题,在update中则完全没这个问题

    Input.GetMouseButtonDown 在fixedupdate中会出现丢失问题,在update中则完全没这个问题

  9. 【C/C++开发】字符串操作

    1)字符串操作 strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat(p, p1) 附加字符串  strncat(p, p1, n) 附加指 ...

  10. vue 跨域简记

    0.服务端设置 app.use(function(req, res, next){ //设置跨域访问 res.header('Access-Control-Allow-Origin', '*'); r ...