目录
一、事件修饰符
.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