1、冒泡与捕获:
冒泡:由内向外触发;捕获:由外向内触发

2、修饰符
(1).stop修饰符:阻止事件冒牌,不让他向外触发
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id ="element1">
<div @click="test1">
<span>测试1</span>
<div @click.stop="test2">
<span>测试2</span>
</div>
</div>
</div>
<script type="text/javascript">
var vm = new Vue({
el : "#element1",
// data:{
// },
methods:{
test1:function(){
console.log("click1");
},
test2:function(){
console.log("click2");
}
}
})
</script>
</body>
</html>
结果:不添加.stop会输出click2,click1,添加.stop后只显示click2
(2).capture 捕获事件,点击子节点,会从外向内触发
输出结果顺序变成:点击测试2,输出click1,click2
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id ="element1">
<div @click="test1">
<span>测试1</span>
<div @click.stop="test2">
<span>测试2</span>
</div>
</div>
</div>
<script type="text/javascript">
var vm = new Vue({
el : "#element1",
// data:{
// },
methods:{
test1:function(){
console.log("click1");
},
test2:function(){
console.log("click2");
}
}
})
</script>
</body>
</html>
(3).self只会触发自己范围内的事件,不会包含子元素
(4).once,只要点击按钮只会执行一次
结果:无论点击多少次click2,只会在第一次点击输出 click2 ,click1
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id ="element1">
<div @click.once="test1">
<span>测试1</span>
<div @click.once="test2">
<span>测试2</span>
</div>
</div>
</div>
<script type="text/javascript">
var vm = new Vue({
el : "#element1",
// data:{
// },
methods:{
test1:function(){
console.log("click1");
},
test2:function(){
console.log("click2");
}
}
})
</script>
</body>
</html>
原文:https://www.cnblogs.com/CXMS/p/13530352.html