原文链接: vue 事件修饰符 stop,capture,prevent
上一篇: 在 JavaScript 中 (a ==1 && a== 2 && a==3) 是否有可能为 true
下一篇: vue 自定义指令 directives
https://cn.vuejs.org/v2/guide/events.html
使用stop和capture 终止事件传递和捕获事件
事件冒泡由底向上
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue阻止事件冒泡</title>
<script src="./vue.js" charset="utf-8"></script>
</head>
<body>
<div id="app" @click="one">
one
<div @click="two">
two
<div @click="three">
three
</div>
</div>
</div>
</body>
<script>
new Vue({
el: "#app",
methods: {
one: function() {
alert("one")
},
two: function() {
alert("two")
},
three: function() {
alert("three")
}
}
})
</script>
</html>
点击three 会出现 三个弹窗
three,two,one
加入stop后只会出现three 即终止了事件的冒泡
<div @click.stop="three">
three
</div>
与使用event的事件函数起到的效果相同
在微软的模型中,你必须设置事件的cancelBubble的属性为true
window.event.cancelBubble = true
在w3c模型中你必须调用事件的stopPropagation()方法
e.stopPropagation()
捕获事件由顶向下,使用capture 表示捕获事件
<div id="app" @click.capture="one">
one
<div @click="two">
two
<div @click.stop="three">
three
</div>
</div>
</div>
点击three,结果为one,three
<div id="app" @click.capture="one">
one
<div @click.capture="two">
two
<div @click.stop="three">
three
</div>
</div>
</div>
点击three 结果 为 one,two,three,
点击two结果为one,two
prevent阻止默认行为
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
once 事件只触发一次
<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>