详解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 播放器 控制
Jan 22 Javascript
document.designMode的功能与使用方法介绍
Nov 22 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
Oct 21 Javascript
jQuery回车实现登录简单实现
Aug 20 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
Mar 03 Javascript
js调出上下文菜单的实例
Dec 17 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
vue.js移动端tab组件的封装实践实例
Jun 30 Javascript
详解js加减乘除精确计算
Mar 19 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 Javascript
JavaScript实现复选框全选和取消全选
Nov 20 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 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
JS一个简单的注册页面实例
2017/09/05 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
webpack的CSS加载器的使用
2018/09/11 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
微信小程序实现点击导航条切换页面
2020/11/19 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
Python读取图片EXIF信息类库介绍和使用实例
2014/07/10 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
mac使用python识别图形验证码功能
2020/01/10 Python
Linux面试题LINUX系统类
2014/11/19 面试题
工程班组长岗位职责
2013/12/30 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
商铺门前三包责任书
2014/07/25 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
2015年质检工作总结
2015/05/04 职场文书
公司酒会主持词
2015/07/02 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
Python中常见的导入方式总结
2021/05/06 Python
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis