详解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实现文本框鼠标右击无效以及不能输入的代码
Nov 05 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
jQuery实现点击行选中或取消CheckBox的方法
Aug 01 Javascript
jQuery中值得注意的trigger方法浅析
Dec 12 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
Angular2学习教程之组件中的DOM操作详解
May 28 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
Jul 10 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
Sep 30 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
May 09 Javascript
mock.js模拟数据实现前后端分离
Jul 24 Javascript
Element Collapse 折叠面板的使用方法
Jul 26 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设计模式 Template (模板模式)
2011/06/26 PHP
PHP多态代码实例
2015/06/26 PHP
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
在python中实现同行输入/接收多个数据的示例
2019/07/20 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
使用Python封装excel操作指南
2021/01/29 Python
python 对xml解析的示例
2021/02/27 Python
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
什么是数据抽象
2016/11/26 面试题
公证书样本
2014/04/10 职场文书
养牛场项目建议书
2014/05/13 职场文书
工程承包协议书范本
2014/09/29 职场文书