详解addEventListener的三个参数之useCapture


Posted in Javascript onMarch 16, 2015

addEventListener 有三个参数:第一个参数表示事件名称(不含 on,如 "click");第二个参数表示要接收事件处理的函数;第三个参数为 useCapture,本文就讲解它。

<div id="outDiv">

  <div id="middleDiv">

    <div id="inDiv">请在此点击鼠标。</div>

  </div>

</div>

<div id="info"></div>
var outDiv = document.getElementById("outDiv");

var middleDiv = document.getElementById("middleDiv");

var inDiv = document.getElementById("inDiv");

var info = document.getElementById("info");

outDiv.addEventListener("click", function () { info.innerHTML += "outDiv" + "<br>"; }, false);

middleDiv.addEventListener("click", function () { info.innerHTML += "middleDiv" + "<br>"; }, false);

inDiv.addEventListener("click", function () { info.innerHTML += "inDiv" + "<br>"; }, false);

上述是我们测试的代码,根据 info 的显示来确定触发的顺序,有三个 addEventListener,而 useCapture 可选值为 true 和 false,所以 2*2*2,可以得出 8 段不同的程序。

•全为 false 时,触发顺序为:inDiv、middleDiv、outDiv;
•全为 true 时,触发顺序为:outDiv、middleDiv、inDiv;
•outDiv 为 true,其他为 false 时,触发顺序为:outDiv、inDiv、middleDiv;
•middleDiv 为 true,其他为 false 时,触发顺序为:middleDiv、inDiv、outDiv;
•……

最终得出如下结论:

•true 的触发顺序总是在 false 之前;
•如果多个均为 true,则外层的触发先于内层;
•如果多个均为 false,则内层的触发先于外层。

以上就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
javascript web页面刷新的方法收集
Jul 02 Javascript
添加JavaScript重载函数的辅助方法2
Jul 04 Javascript
jQuery中prevUntil()方法用法实例
Jan 08 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
Aug 06 Javascript
js实现索引图片切换效果
Nov 21 Javascript
利用Node.js对文件进行重命名
Mar 12 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
Jun 14 Javascript
使用JavaScript根据图片获取条形码的方法
Jul 04 Javascript
微信小程序 自定义消息提示框
Aug 06 Javascript
vue文件运行的方法教学
Feb 12 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
Mar 16 #Javascript
jquery中radio checked问题
Mar 16 #Javascript
jquery中JSON的解析方式
Mar 16 #Javascript
浅谈js中的闭包
Mar 16 #Javascript
js完美实现@提到好友特效(兼容各大浏览器)
Mar 16 #Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
Mar 15 #Javascript
JavaScript中的DSL元编程介绍
Mar 15 #Javascript
You might like
php模板中出现空行解决方法
2011/03/08 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
js实现消灭星星(web简易版)
2020/03/24 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
python字典的常用操作方法小结
2016/05/16 Python
python daemon守护进程实现
2016/08/27 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
python根据时间获取周数代码实例
2019/09/30 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
试用期员工考核制度
2014/01/22 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
父亲节活动总结
2015/02/12 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
Redis高级数据类型Hyperloglog、Bitmap的使用
2021/05/24 Redis
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python