• .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>

当点击第一次弹出 “我被触发了”第二次则不会触发点击事件也就不会弹出了

最新文章

  1. java web学习总结(二十八) -------------------JSP中的JavaBean
  2. ebs如何将客户化的PL/SQL程序发布到webservice
  3. android FragmentActivity+FragmentTabHost+Fragment框架布局
  4. 使用 Flexbox 的居中布局
  5. Phonegap hello world 不容易啊~!
  6. vs2013创建mvc项目体系找不到指定文件
  7. Golang的iota的特性
  8. sql 汉字转首字母拼音
  9. windows后台服务程序编写
  10. property函数
  11. iOS是最安全的?苹果iOS恶意软件数量增速首次超过Android
  12. 利用Google浏览器调试js代码
  13. SQLite Where 子句(http://www.w3cschool.cc/sqlite/sqlite-where-clause.html)
  14. jQuery 入口函数主要有4种写法
  15. Gitlab+Jenkins实现自动部署
  16. Selenium:浏览器及鼠标、键盘事件
  17. Android ——VideoView禁止&quot;无法播放该视频&quot;弹窗
  18. [转]Greenplum 通过gpfdist + EXTERNAL TABLE 并行导入数据
  19. Python正则表达式操作指南
  20. NLog写入Mongo日志配置

热门文章

  1. 使用 pyenv 管理 Python 版本
  2. 前端JS编码规范
  3. Oracle 中 not exists (select &#39;X&#39; ...) 的含义
  4. drawChild中画阴影,裁剪出圆角
  5. String 类的常用方法
  6. EZOJ #389点分治好题
  7. 不缓存JS
  8. php中的构造函数与析构函数
  9. 微软手写识别模块sdk及delphi接口例子
  10. 洛谷T89644 palindrome回文串