Vue · v-on和事件修饰符(.stop .prevent .capture .self .once)

本文详细介绍了Vue中事件修饰符的使用,包括.stop用于阻止冒泡,.prevent防止默认事件,.capture在事件捕获阶段触发,.self确保事件仅在自身元素上触发,以及.once使事件处理函数只执行一次。通过多个代码实例和运行效果展示了各个修饰符的作用和区别。
摘要由CSDN通过智能技术生成

目录

 

一、事件修饰符

二、事件修饰符的使用

(1).stop

【代码实现-无.stop】

【运行效果-无.stop】

【代码实现-有.stop】

【运行效果-有.stop】

(2).prevent

【代码实现-无.prevent】

【运行效果-无.pervent】

【代码实现-有.prevent】

【运行效果-有.prevent】

(3).capture

【运行效果-无.capture】

【代码实现-无.capture】

【代码实现-有.capture】

【运行效果-有.capture】

(4).self

【代码实现-无.self】

【代码实现-有.self】

【运行效果-有.self】

(5).once

【代码实现-无.once】

【代码实现-有.once】

【运行效果-有.once】

三、注意

.stop和.self的区别

【①代码实现-无.stop和.self】

【①运行效果-无.stop和.self】

【②代码实现-有.stop,无.self】

【②运行效果-有.stop,无.self】

【③代码实现-无.stop,有.self】

【③运行效果-无.stop,有.self】


一、事件修饰符

.stop 阻止冒泡

.prevent 组织默认事件

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

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

.once 事件只触发一次

二、事件修饰符的使用

(1).stop

在没使用.stop时,默认是冒泡机制

.stop阻止所有冒泡行为

【代码实现-无.stop】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Vue学习</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
		<style>
			.inner{
				height: 9.375rem;
				background-color: bisque;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div class="inner" @click="div1Handler">
				<input type="button" value="点我" @click="btnHandler"/>
			</div>

		</div>
		
		
		<script>
		//注意:在VM实例中,想要获取data上的数据,或想调用methods中的方法,需要用 this.数据属性名 或 this.方法名 来访问。表示我们new出来的实例对象
			var vm = new Vue({
				el:'#app',
				data:{},
				methods:{
					div1Handler(){
						console.log("inner div点击事件")
					},
					btnHandler(){
						console.log("btn点击事件")
					}
				}
			})
		</script>
	</body>
</html>

【运行效果-无.stop】

点击“点我”按钮后,先触发了按钮本身的事件,接着触发了父级组件div的事件。

【代码实现-有.stop】

想要实现仅触发组件本身,不触发其父级组件的事件,可以加.stop在事件

.stop所加的位置:

全部代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Vue学习</title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
		<style>
			.inner{
				height: 9.375rem;
				background-color: bisque;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div class="inner" @click="div1Handler">
				<input type="button" value="点我" @click.stop="btnHandler"/>
			</div>

		</div>
		
		
		<script>
		//注意:在VM实例中,想要获取data上的数据,或想调用methods中的方法,需要用 this.数据属性名 或 this.方法名 来访问。表示我们new出来的实例对象
			var vm = new Vue({
				el:'#app',
				data:{},
				methods:{
					div1Handler(){
						console.log("inner div点击事件")
					},
					btnHandler(){
						console.log("btn点击事件")
					}
				}
			})
		</script>
	</body>
</html>

【运行效果-有.stop】

(2).prevent

比如,a标签的默认行为是跳转链接,加了.pervent

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值