Vue2事件修饰符

prevent:阻止默认事件(常用)

<div id="root">
	<!-- 阻止默认事件 -->
	<a href="http://www.baidu.com" @click.prevent="showInfo">点我提示信息</a>
</div>
<script>
	const vm = new Vue({
		el:"#root",
		data(){
			return {
				name:"哈哈"
			}
		},
		methods: {
			showInfo(e){
			// e.preventDefault();
			},
		},
	})
</script>

stop:阻止事件冒泡

<div id="root">
	<div id="demo1" @click="show">
		<button @click.stop="show">点我</button>
	</div>
</div>
<script>
	const vm = new Vue({
		el:"#root",
		methods: {
			show(e){
				// e.stopPropagation();// 阻止
				alert("点我")
			},
		},
	})
</script>

once:事件只触发一次

capture:使用事件的捕获模式

先捕获后冒泡

 <div id="root">
   <div class="box1" @click.capture="show(1)">123
       <div class="box2"  @click="show(2)">456</div>
   </div>
</div>
<script>
    const vm = new Vue({
        el:"#root",
        methods: {
            show(param){
               alert(param)
            },
        },
    })
</script>

self:只有event.target是当前操作的元素时才触发事件

<div id="root">
	<div class="box1" @click.self="show">123
		<div class="box2"  @click="show">456</div>
	</div>
</div>
<script>
	const vm = new Vue({
		el:"#root",
		methods: {
			show(param){
				console.log(param);
			},
		},
	})
</script>

passive:事件的默认行为立即执行,无需等待事件回调执行完毕(多用于移动端手机或Pad)

@scroll 滚动条滚动时调用
@wheel 鼠标滚轮滚动时调用(滚轮执行后滚动条才会动)

 <style>
	.container{
		width: 500px;
		height: 500px;
		overflow: auto;
	}
	.container li{
		height: 100px;
	}
</style>
<div id="root">
	<div class="container" @wheel.passive="show">
		<ul>
			<li>这是内容</li>
			<li>这是内容</li>
			<li>这是内容</li>
			<li>这是内容</li>
			<li>这是内容</li>
			<li>这是内容</li>
			<li>这是内容</li>
			<li>这是内容</li>
			<li>这是内容</li>
			<li>这是内容</li>
		</ul>
	</div>
 </div>
<script>
	const vm = new Vue({
		el:"#root",
		methods: {
			show(){
				for(var i=0;i<10000;i++){
					console.log("#");
				}
				console.log("累坏了");
			},
		},
	})
</script>

native:在父组件中给子组件绑定一个原生的事件,就将子组件变成了普通的HTML标签,不加’. native’事件是无法触 发的

<Student ref="child" @click.native="showCon"></Student>

修饰符可以多个一起使用

<div id="root">
	<div id="demo1" @click="show">
		<a href="http://www.baidu.com" @click.stop.prevent="show">点我</a>
	</div>
</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值