Javascript中的事件捕获、事件冒泡与事件委托
看以下简单的三层div结构。
<div id="grandparent"><div id="parent"><div id="child"></div></div>
</div>
根据以上三层div嵌套结构,我来根据我的理解解释下什么叫事件捕获、事件冒泡、事件委托。
事件捕获:触发事件时,事件会从父元素到子元素先后响应。想象一下,你点击child元素时,是不是同时点击了parent和grandparent元素,那么他们都会响应你的点击事件,且响应的顺序是先父后子。
事件冒泡:事件冒泡和事件捕获恰巧相反,当你点击child时,事件的响应顺序是先子后父。
事件委托:事件委托应用了事件冒泡的原理,即当你想给child元素添加事件时,你可以将事件添加到parent甚至更高层的祖先元素上。
接下来你可能会想,既然事件冒泡和事件捕获是相反的两种事件处理机制,那么那种到底会生效呢?
所有现代浏览器都支持事件冒泡,事件捕获在一些较老的浏览器中不支持,所以你可以放心的使用事件冒泡,当然浏览器的默认机制也是事件冒泡。
既然事件会在文档树上冒泡或捕获,那如何控制它呢?比如现在我就想在点击child时,只有child响应事件。那么事件对象是你必须懂得的。
事件对象:在触发DOM上的某个事件时,会产生一个对象event,它保存着所有与事件相关的信息。事件对象的stopPropagation()方法可以取消事件的捕获或冒泡。例如:
<script>var obj = document.getElementById("child");obj.onclick = function(event){event.stopPropagation();};
</script>
最后介绍下事件委托在什么情况下会用的比较多。
1.当你要给非常多的元素指定相同的事件处理程序时。比如你要给一个ul>li*50指定事件时,就可用事件委托,将事件委托给ul而不是直接指定到li上。
2.当页面是实时更新内容时。比如通过scroll事件动态加载图片时,由于新加载的文档内容不会响应事件(因为事件处理程序只会添加到在添加事件时已经存在的元素上)所以我们可以在指定事件时指定到包含图片的父元素上。
Javascript中的事件捕获、事件冒泡与事件委托相关推荐
- JavaScript事件冒泡、事件捕获和阻止默认事件
谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. 冒泡篇 先来看一段实例: js: var $input = document. ...
- 事件捕获、冒泡的工作原理
事件捕获.冒泡的工作原理 什么是事件流 什么是事件冒泡? 什么是事件捕获 图解 什么是事件流 事件流是指从页面中接收事件的顺序.也就是说,当一个事件产生时,这个事件的传播过程就是事件流. 什么是事件冒 ...
- JavaScript 中的内存和性能、模拟事件(读书笔记思维导图)
由于事件处理程序可以为现代 Web 应用程序提供交互能力,因此许多开发人员会不分青红皂白地向页面中添加大量的处理程序.在 JavaScript 中,添加到页面上的事件处理程序数量将直接关系到页面的整体 ...
- JS7day(事件对象,事件流,事件捕获和冒泡,阻止事件流动,事件委托,学生信息表案例)
文章目录 事件对象 获取事件对象 部分常用属性 事件流 事件捕获概念: 事件冒泡概念: 阻止事件流动: 相同的鼠标经过事件: 两种(监听事件)注册事件的区别: 传统on注册(L0) 事件监听注册(L2 ...
- 事件捕获、冒泡、绑定、赋值、委托、兼容、滚轮
clientX/Y 可视区的鼠标坐标 全兼容 offsetX/Y 鼠标坐标到物体边框的距离 IE+Chrome page ...
- JavaScript中几个不常用的绑定事件
目录 一.fullscreenchange事件 二.pagehide事件 三.pageshow事件 四.hashchange事件 五.online事件 六.offline事件 七.popstate事件 ...
- Silverlight实用窍门系列:35.细解Silverlight冒泡路由事件和注册冒泡路由事件【附带实例源码】...
Silverlight中的事件分为普通事件和冒泡路由事件,它并没有包括WPF中的隧道路由事件,在本章中将详细讲解冒泡路由事件和如何注册一个冒泡路由事件. 一.细解冒泡路由事件 冒泡路由事件可以比喻为: ...
- html下拉框onchange事件,javascript 中select标签上放入onchange事件的两种方式分享
摘要: 下文讲述在html标签select上放入onchange事件的方式分享,如下所示: 例1: maomao365.com js select上直接使用onchange的方法 function s ...
- JavaScript中的BOM操作之浏览器常见事件
①click点击事件 <body> <div id="d">我是div</div> <script> //直接绑定事件处理函数 d. ...
- javascript中的事件冒泡、事件捕获和事件执行顺序
谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的应用有 ...
最新文章
- 【linux】Valgrind工具集详解(八):Memcheck命令行参数详解
- 深度学习:自然语言处理(五)NLTK的经典应用
- Python操作dict时避免出现KeyError的几种方法
- 基于python的界面自动化测试-基于python的接口自动化测试+ddt数据驱动
- py-faster-rcnn用自己的数据训练模型
- 网络流 增广路 回退
- 安装Hadoop及Spark(Ubuntu 16.04)
- Java中的命名参数
- python中__init__.py的作用、module和package
- Math工具类的使用
- 【PDN仿真笔记3-电容布局Q3D模型搭建】
- 电力系统决策支持系统
- hikaricp mysql_HikariCP数据库连接池
- Springboot项目javax.validation使用方法详解
- 利用android monkey 抢支付宝红包
- JVM_06 运行时数据区3-方法区
- matlab loglog
- 智慧交通系统平台建设方案(附下载)
- 国家自然科学基金成果填写经验
- 最简单的基于FFmpeg的推流器(以推送RTMP为例)
热门文章
- C# 调用ffmepg 读取海康或大华视频的功能
- 苹果MAC系统怎么编译C语言
- 二叉树的后序遍历(非递归算法)
- JAVA、Python、selenium、问卷星自动脚本
- 猜测在学习新工具中的作用,一个实例
- 用于单眼深度估计的结构化注意力导向卷积神经场(论文2018)
- OSChina 周四乱弹 —— 表妹要嫁人 舅妈叮嘱……
- step 文件在sw怎么编辑_SolidWorks如何编辑STEP文件?
- chunked java_java – 如何正确使用ChunkedStream
- 单片机4x4矩阵键盘c语言,求一个单片机4X4矩阵键盘扫描程序,C语言的。