详解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 相关文章推荐
更正确的asp冒泡排序
May 24 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
Jul 04 Javascript
Node.js实现在目录中查找某个字符串及所在文件
Sep 03 Javascript
javascript实现随机读取数组的方法
Aug 03 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
深入剖析javascript中的exec与match方法
May 18 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 Javascript
js 计算图片内点个数的示例代码
Apr 04 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
Apr 11 Javascript
vue中的inject学习教程
Apr 24 Javascript
利用PHP实现递归删除链表元素的方法示例
Oct 23 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
DSP接收机前端设想
2021/03/02 无线电
模仿OSO的论坛(一)
2006/10/09 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
php json相关函数用法示例
2017/03/28 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
微信小程序利用for循环解决内容变更问题
2020/03/05 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
美国羊皮公司:Overland
2018/01/15 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
电焊工岗位职责
2014/03/06 职场文书
团日活动总结模板
2014/06/25 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书