事件修饰符:

+ .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. 零基础学Python-第一章 :Python介绍和安装-02.Python的发展历史与版本

    pthhon3.0对开发者带来了麻烦,因为2.0个3.0的程序并不是兼容的. 目前python3.0已经变成了真正的主力 官方版本和发行版 发行版会把常用的科学计算的包也给继承进来.这样就不用考虑包和 ...

  2. 123457123456#1#----com.MC.CarWashKidsGames234----前拼后广--洗车游戏mc-mc1111

    com.MC.CarWashKidsGames234----前拼后广--洗车游戏mc-mc1111

  3. ASP.NET全球化与本地化 c#多国语言的支持 (项目支持多国语言的开发)

    ASP.NET 2.0及以上的开发平台,为全球化本地化应用程序提供了工具,而且实现起来非常简单.以下内容是使用c#,按照帮助一步步做的,将为初学者提供详细的实现步骤. 一 几个必要概念 (一) 支持全 ...

  4. Java基础教程:Java内存区域

    Java基础教程:Java内存区域 运行时数据区域 Java虚拟机在执行Java程序的过程种会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟 ...

  5. 钩子(hook)

    钩子(hook)编程     钩子(hook)编程 一.钩子介绍 1.1钩子的实现机制 钩子英文名叫Hook,是一种截获windows系统中某应用程序或者所有进程的消息的一种技术.下图是windows ...

  6. rdkafka swoole

    1.yum install php-devel php-pear 2. wget http://pear.php.net/go-pear.phar 3.PHP go-pear.phar 4.cp /r ...

  7. Qt跨平台原理

    Qt跨平台原理: 和java一样,针对每一种OS平台,QT都有一套对应的底层类库,而接口是完全一致的. 因此只要是在QT库上开发的程序,放在任何一种平台下都可以编译运行(前提条件是:程序中没有使用某O ...

  8. 《ucore lab7》实验报告

    资源 ucore在线实验指导书 我的ucore实验代码 练习1: 理解内核级信号量的实现和基于内核级信号量的哲学家就餐问题(不需要编码) 题目 完成练习0后,建议大家比较一下(可用meld等文件dif ...

  9. Java基础笔试练习(五)

    1.以下关于Integer与int的区别错误的是? A.int是java提供的8种原始数据类型之一 B.Integer是java为int提供的封装类 C.int的默认值为0 D.Integer的默认值 ...

  10. 安装python的pip库setup.py出现报错的解决过程

    错误起因: 第一次安python3.72的时候,直接去官网下了压缩包,解压后也没有exe文件.环境也是手动配置,在之后安装Pycharm的时候,系统找不到解释器,手动加上. 错误经过: 等写程序用到i ...