详解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 相关文章推荐
Javascript操作cookie的函数代码
Oct 03 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
浅谈angular懒加载的一些坑
Aug 20 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
Nov 10 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
Feb 14 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
Aug 10 Javascript
100行代码实现一个vue分页组功能
Nov 06 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
使用JS实现简易计算器
Jun 14 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计算给定时间之前的函数用法实例
2015/04/03 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
prototype 学习笔记整理
2009/07/17 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
jQuery动态添加
2016/04/07 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
Python中生成器和yield语句的用法详解
2015/04/17 Python
用Python写冒泡排序代码
2016/04/12 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
Flask之flask-session的具体使用
2018/07/26 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Python函数中的可变长参数详解
2019/09/12 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
应聘教师推荐信
2013/10/31 职场文书
大学生入党自我鉴定
2013/10/31 职场文书
大学迎新标语
2014/06/26 职场文书
竞聘自述材料
2014/08/25 职场文书
优秀纪检干部材料
2014/08/27 职场文书
2014年底工作总结
2014/12/15 职场文书
八一建军节主持词
2015/07/01 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python