详解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 相关文章推荐
jquery 最简单易用的表单验证插件
Feb 27 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
May 25 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
Jul 20 Javascript
jQuery简单实现日历的方法
May 04 Javascript
JavaScript中的函数(二)
Dec 23 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
Jan 21 Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
Jan 23 Javascript
layer弹出层扩展主题的方法
Sep 11 Javascript
js实现表格数据搜索
Aug 09 Javascript
JavaScript 事件代理需要注意的地方
Sep 08 Javascript
基于openlayers实现角度测量功能
Sep 28 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 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
基于php权限分配的实现代码
2013/04/28 PHP
PHP URL路由类实例
2013/11/12 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
PHP模板解析类实例
2015/07/09 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
学习ExtJS form布局
2009/10/08 Javascript
javascript 节点排序 2
2011/01/31 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
简单了解python的一些位运算技巧
2019/07/13 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
如何做好总经理助理
2013/11/12 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
留守儿童工作方案
2014/06/02 职场文书
2014年部门工作总结
2014/11/12 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
JS实现九宫格拼图游戏
2022/06/28 Javascript