您的位置:首页 > 其它

事件对象(event)、事件冒泡、默认行为

2017-01-20 10:02 113 查看

1.点击事件的
event
(事件对象)

<div id="box">
<input type="button" value="按钮" @click="show($event)">
</div>


var vm = new Vue({
el:'#box',
methods:{
show:function(event){
console.log(event);
alert(event.clientX); //这里边就是原生JS
}
}
});


调用函数的时候传入一个
$event
参数进去,函数内部可以通过这个
event
参数,获取鼠标点击的
X
点和
Y
点。

2.事件冒泡

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script src="http://unpkg.com/vue/dist/vue.js"></script>

<script type="text/javascript">
window.onload = function(){
var vm = new Vue({
el:'#box',
methods:{
show:function(){
alert(1);
},
show2:function(){
alert(2);
}
}
});
}
</script>
</head>
<body>
<div id="box">
<div @click="show2()">
<input type="button" value="按钮" @click="show()">
</div>
</div>
</body>
</html>




点击“按钮”,会依次弹出
1
2
。说明先执行了
show()
方法,然后执行了
show2()
方法。这就是“事件冒泡”。

阻止冒泡

利用我们上面讲过的
event
对象。

在调用函数时传入:

<div id="box">
<div @click="show2()">
<input type="button" value="按钮" @click="show($event)">
</div>
</div>


然后在
show()
方法里可以组织冒泡:

show:function(event){
alert(1);
event.cancelBubble = true;
},


这样
show2()
就不会执行了。

利用vue的方法阻止冒泡

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
<script src="http://unpkg.com/vue/dist/vue.js"></script>

<script type="text/javascript">
window.onload = function(){
var vm = new Vue({
el:'#box',
methods:{
show:function(event){
alert(1);
//event.cancelBubble = true;
},
show2:function(){
alert(2);
}
}
});
}
</script>
</head>
<body>
<div id="box">
<div @click="show2()">
<input type="button" value="按钮" @click.stop="show()">
</div>
</div>
</body>
</html>


注意此时我们没有
event
对象,而是在给HTML元素绑定click事件的时候,改为
@click.stop="show()"


3.默认行为

contextmenu右键菜单

<div id="box">
<input type="button" value="按钮" @contextmenu="show()">
</div>


点击右键也会执行
show()
方法,但是执行完之后会打开右键菜单的默认行为。



如何阻止这种默认行为?

@contextmenu.prevent="show()"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: