Vue--事件处理(逐个学习事件修饰符)
2024-09-06 01:02:53
.capture
.self
.once
主要学习这三个事件修饰符的用法先来看看capture
capture即是给元素添加一个监听器,当元素发生冒泡时,先触发带有该修饰符的元素。若有多个该修饰符,则由外而内触发。
就是谁有该事件修饰符,就先触发谁。 例子如下:
<html>
<head>
<title>Vue事件修饰符 capture</title>
<script src="vue.js"></script>
<style type="text/css">
*{
text-align:center;
line-height:40px;
margin:0 auto;
}
div {
width:100px;
}
#obj1 {
background:deeppink;
}
#obj2 {
background:pink;
}
#obj3 {
background:hotpink;
}
#obj4 {
background:#ff4225
} </style>
</head>
<body>
<div id="example">
<div id="obj1" @click.capture="doSomething">
obj1
<div id="obj2" @click.capture="doSomething">
obj2
<div id="obj3" @click="doSomething">
obj3
<div id="obj4" @click="doSomething">
obj4
</div>
</div>
</div>
</div>
</div>
<script>
new Vue({
el:"#example",
data:{
id:""
},
methods:{
doSomething:function(event){
this.id = event.currentTarget.id;
alert(this.id);
}
}
})
</script>
</body>
</html>
浏览器打开如下:
当点击obj4的时候 触发顺序是 obj1,obj2,obj4,obj3
由于1,2有修饰符,故而先触发事件,然后就是4本身触发,最后冒泡事件。
self
self可以理解为跳过冒泡事件和捕获事件,只有直接作用在该元素上的事件才可以执行。
<html>
<head>
<title>Vue事件修饰符 self</title>
<script src="vue.js"></script>
<style type="text/css">
*{
text-align:center;
line-height:40px;
margin:0 auto;
}
div {
width:100px;
}
#obj1 {
background:deeppink;
}
#obj2 {
background:pink;
}
#obj3 {
background:hotpink;
}
#obj4 {
background:#ff4225
} </style>
</head>
<body>
<div id="example">
<div id="obj1" @click="doSomething">
obj1
<div id="obj2" @click="doSomething">
obj2
<div id="obj3" @click.self="doSomething">
obj3
<div id="obj4" @click="doSomething">
obj4
</div>
</div>
</div>
</div>
</div>
<script>
new Vue({
el:"#example",
data:{
id:""
},
methods:{
doSomething:function(event){
this.id = event.currentTarget.id;
alert(this.id);
}
}
})
</script>
</body>
</html>
上面的例子当点击obj4的时候会依次弹出 obj4,obj2,obj1 ,只有使用了事件修饰符的obj3没有弹出。只有当我们点击obj3才会触发它
once
这个事件修饰符让点击事件只能触发一次
<html>
<head>
<title>Vue事件修饰符 once</title>
<script src="vue.js"></script>
<style type="text/css">
</style>
</head>
<body>
<div id="example">
<button @click.once="clickme">点击我</button>
</div>
<script>
new Vue({
el:"#example",
methods:{
clickme(){
alert("我被触发了");
}
}
})
</script>
</body>
</html>
当点击第一次弹出 “我被触发了”第二次则不会触发点击事件也就不会弹出了
最新文章
- java web学习总结(二十八) -------------------JSP中的JavaBean
- ebs如何将客户化的PL/SQL程序发布到webservice
- android FragmentActivity+FragmentTabHost+Fragment框架布局
- 使用 Flexbox 的居中布局
- Phonegap hello world 不容易啊~!
- vs2013创建mvc项目体系找不到指定文件
- Golang的iota的特性
- sql 汉字转首字母拼音
- windows后台服务程序编写
- property函数
- iOS是最安全的?苹果iOS恶意软件数量增速首次超过Android
- 利用Google浏览器调试js代码
- SQLite Where 子句(http://www.w3cschool.cc/sqlite/sqlite-where-clause.html)
- jQuery 入口函数主要有4种写法
- Gitlab+Jenkins实现自动部署
- Selenium:浏览器及鼠标、键盘事件
- Android ——VideoView禁止";无法播放该视频";弹窗
- [转]Greenplum 通过gpfdist + EXTERNAL TABLE 并行导入数据
- Python正则表达式操作指南
- NLog写入Mongo日志配置