Vue v-on 指令的 self 修饰符用于实现只有点击当前元素的时候,才会触发事件处理函数。如果是因为事件冒泡或者 Capture 模式 触发的事件,Vue v-on 指令的 self 修饰符则会忽略此类事件。
Vue v-on stop 会阻止真正冒泡事件,而 Vue v-on self 只会阻止自己身上的冒泡行为的触发。
<!DOCTYPE html>
<html>
<head>
<title>Vue v-on self</title>
<script type="text/javascript" src="./lib/vue-2.6.10.min.js"></script>
</head>
<style type="text/css">
.inner{
height: 150px;
background-color: green;
}
</style>
<body>
<div id="app">
<div class="inner" @click.self='divHandler'>
<input type="button" value="HaiCoder" @click='btnHandler'>
<p>嗨客网(www.haicoder.net)</p>
</div>
</div>
</body>
<script type="text/javascript">
var vm = new Vue({
el :'#app',
data:{
},
methods:{
divHandler(){
console.log('Inner div 的点击事件')
},
btnHandler(){
console.log('Btn 的点击事件')
}
}
})
</script>
</html>
浏览器运行后,点击 button 只触发了 button 的点击事件,而没有触发 div 的点击事件, 因为我们使用了 Vue v-on self 修饰符来修饰 div 只有自己的事件才能触发,效果如下图所示:
Vue v-on 指令的 self 修饰符用于实现只有点击当前元素的时候,才会触发事件处理函数。