JS Event handler example - event capture and bubble
JS and Event handler Example Capture
2023-09-14 09:03:57 时间
Created by Jerry Wang, last modified on Jun 06, 2015
source link:
http://www.ido321.com/1570.html
这个example 有一个陷阱,如果测试用的script不写在window.ready事件里,将得不到效果。
事件捕获和事件冒泡是事件流中的两个阶段,任何事件产生时,如点击一个按钮,将从最顶端的容器开始(一般是html的根节点)。浏览器会向下遍历DOM树直到找到触发事件的元素
点击button 1:
target: button
至此target node处理完了,继续处理hierarchy树的下一个节点:body. 此时event.target 还是button:
然后继续处理body下面的div 节点:
找到目的节点了:
一旦浏览器找到该元素,事件流就进入事件目标阶段,该阶段完成后,浏览器会沿DOM树向上冒泡直到最顶层容器,看看是否有其它元素需要使用同一个事件。
大多数现代库使用冒泡监听,而在捕获阶段处理。浏览器包含一个方法来管理事件冒泡。事件处理程序可以调用
stopPropagation
告诉DOM事件停止冒泡
第二个方式是调用
stopImmediatePropagation
,它不仅停止冒泡,也会阻止这个元素上其它监听当前事件的处理程序触发。然而,停止传播事件时要小心,因为你不知道是否有其它上层的DOM元素可能需要知道当前事件。
This example also shows how to raise and catch custom event via jQuery:
<img src=“https://cloud.githubusercontent.com/assets/5669954/26556349/4ca0cb16-449a-11e7-8d2e-fb47d690b0f2.png)
要获取更多Jerry的原创文章,请关注公众号"汪子熙”:
相关文章
- js面试题及答案2020_JS面试题大全
- html如何只刷新页面指定,js控制页面刷新 JS刷新当前页面的几种方法总结
- JS获取当前年份_js获取当前时间年月日
- 【JS 逆向百例】猿人学系列 web 比赛第二题:js 混淆 - 动态 cookie,详细剖析
- clipboard.js:最轻便的复制页面内容到剪切板的JS
- JS定时器:setTimeout()和setInterval()方法
- 使用JS连接MySQL数据库:实现化繁为简(js连接mysql数据库)
- 使用 JS 操作 Redis:实现强大数据存储.(js调用redis)
- 用SQL Server和JS实现数据库管理技术(sqlserver.js)
- MySQL中AND的使用方法及含义解析(mysql中and的含义)
- MySQL中的AND和OR使用逻辑运算符优化查询语句(mysql中and与or)
- 使用JS技术实现Oracle数据库链接(js 链接 oracle)
- JS在Oracle中的应用(js如何oracle)
- Oracle中使用除了And的其他查询关键字(oracle中除了and)
- Oracle中使用AND运算符的示例分析(oracle中and用法)
- 使用Oracle和JS开发新一代应用仿真世界(oracle js)
- JS函数验证总结(方便js客户端输入验证)
- CSS和JS标签style属性对照表(方便js开发的朋友)
- js对象之JS入门之Array对象操作小结
- 数组方法解决JS字符串连接性能问题有争议
- JS分割字符串并放入数组的函数
- js模拟3D场景效果代码打包
- js正则表达式之RegExp对象之compile方法编译正则表达式
- js获取坐标通过JS得到当前焦点(鼠标)的坐标属性
- js显示当前系统时间的代码
- js克隆对象、数组的常用方法介绍
- JS格式化数字金额用逗号隔开保留两位小数
- js数组转json并在后台对其解析具体实现
- js和php邮箱地址验证的实现方法
- 网页广告中JS代码的信息监听示例
- js玩转正则表达式之语法高亮