详解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 判断代码全收集
Apr 28 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
Feb 20 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
Oct 15 Javascript
超漂亮的jQuery图片轮播特效
Nov 24 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
Nov 30 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
Apr 21 Javascript
JSON 数据详解及实例代码分析
Jan 20 Javascript
React中this丢失的四种解决方法
Mar 12 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
Jul 28 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
Oct 27 Javascript
vue实现轮播图帧率播放
Jan 26 Vue.js
解决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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
通达OA公共代码 php常用检测函数
2011/12/14 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP QRCODE生成彩色二维码的方法
2016/05/19 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
bootstrap常用组件之头部导航实现代码
2017/04/20 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
python打开文件并获取文件相关属性的方法
2015/04/23 Python
Python操作MongoDB详解及实例
2017/05/18 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
浅析Python迭代器的高级用法
2020/07/16 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
应届生自荐信
2014/06/30 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
独生子女证明范本
2015/06/19 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
Python中使用subprocess库创建附加进程
2021/05/11 Python