详解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 相关文章推荐
[JS源码]超长文章自动分页(客户端版)
Jan 09 Javascript
js 获取时间间隔实现代码
May 12 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
JavaScipt中栈的实现方法
Feb 17 Javascript
JS只能输入正整数的简单实例
Oct 07 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
利用javascript如何随机生成一定位数的密码
Sep 22 Javascript
Vue实现table上下移动功能示例
Feb 21 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 Javascript
简单了解Vue computed属性及watch区别
Jul 10 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
Aug 20 Javascript
Node实现搜索框进行模糊查询
Jun 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
Jquery异步请求数据实例代码
2011/12/28 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
Puppet的一些技巧
2018/09/17 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python常见的pandas用法demo示例
2019/03/16 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
python批量生成身份证号到Excel的两种方法实例
2021/01/14 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
自荐信的两点禁忌
2013/10/30 职场文书
计算机专业大学生的自我评价
2013/11/14 职场文书
初中家长寄语
2014/04/02 职场文书
运动会口号16字
2014/06/07 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
介绍信范文大全
2015/05/07 职场文书
困难补助申请报告
2015/05/19 职场文书
亮剑观后感300字
2015/06/05 职场文书
2015团员个人年度总结
2015/11/24 职场文书