就是两个框框重叠,通过事件修饰符来决定触发哪个事件.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<style>
.inner {
height: 150px;
background: blue;
width: 300px;
}
.outer {
padding-top: 20px;
padding-left: 20px;
height: 300px;
width: 400px;
background:brown;
}
</style>
</head>
<body>
<div id="app">
<!-- 默认会先调用里面的方法,在调用外面的方法,从里到外 .stop 阻止冒泡 -->
<!-- <div class="inner" @click="innerclick">
<input type="button" value="按钮" @click.stop="btnclick">
</div> -->
<!-- .capture 使用事件捕获,从外到里 -->
<!-- <div class="inner" @click.capture="innerclick">
<input type="button" value="按钮" @click="btnclick">
</div> -->
<!-- .self 实现只有点击自己才会执行 -->
<!-- <div class="inner" @click.self="innerclick">
<input type="button" value="按钮" @click="btnclick">
</div> -->
<!-- .prevent 阻止默认行为 -->
<a href="http://www.baidu.com" @click.prevent="linkbaidu">跳转至百度</a>
<!-- .prevent 阻止默认行为 .once 只会执行一次 可以串联使用-->
<a href="http://www.baidu.com" @click.prevent.once="linkbaidu">跳转至百度</a>
<!-- 演示.stop 跟 .self的区别 .self只会阻止自己,并不会阻止事件冒泡-->
<div class="outer" @click="outerclick">
<div class="inner" @click.self="innerclick">
<input type="button" value="按钮" @click="btnclick">
</div>
</div>
<br>
<!-- 演示.stop 跟 .self的区别 .stop会阻止事件冒泡-->
<div class="outer" @click="outerclick">
<div class="inner" @click="innerclick">
<input type="button" value="按钮" @click.stop="btnclick">
</div>
</div>
</div>
<script>
var vm = new Vue({
el: '#app',
data: {},
methods: {
innerclick() {
console.log("我是inner")
},
btnclick() {
console.log("我是按钮")
},
linkbaidu() {
console.log("跳转至百度")
},
outerclick(){
console.log("我是outer")
}
}
});
</script>
</body>
</html>