如何实现Javascript事件的捕获方式和冒泡方式
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章将为大家详细讲解有关如何实现Javascript事件的捕获方式和冒泡方式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、事件处理模型事件冒泡、捕获:事件冒
千家信息网最后更新 2025年11月14日如何实现Javascript事件的捕获方式和冒泡方式
这篇文章将为大家详细讲解有关如何实现Javascript事件的捕获方式和冒泡方式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、事件处理模型
事件冒泡、捕获:事件冒泡和事件捕获分别由微软和网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题。
给出的具有嵌套关系的三个div,给三个元素注册相同的事件时,它们的触发顺序时怎样呢?
1、事件冒泡
微软提出了名为事件冒泡的事件流。结构上(非视觉上)嵌套关系的元素,会存在冒泡的功能,即同一事件,自子元素冒泡向父元素。(自底向上)
针对上面的例子,如果用冒泡方式,触发顺序应该时:d3-->d2-->d1,那么我们来验证一下:
(1)给三个div元素绑定事件
//1.获取元素var d1 = document.querySelector('#d1')var d2 = document.querySelector('#d2')var d3 = document.querySelector('#d3')//2、绑定事件d1.onclick = function(){ console.log(this.id) }d2.onclick = function(){ console.log(this.id) }d3.onclick = function(){ console.log(this.id) }(2)运行结果:
单击红色区域:

单击紫色区域:

单击绿色区域:
以上就是事件冒泡啦!
2、事件捕获
结构上(非视觉上)嵌套关系的元素,会存在事件捕获的功能,即同一事件,自父元素捕获至子元素(事件源元素)。(自顶向下)(ie没有捕获事件)
针对上面的例子,如果用冒泡方式,触发顺序应该时:d1-->d2-->d3,那么我们来验证一下:
(1)给三个div元素绑定事件
//1.获取元素var d1 = document.querySelector('#d1')var d2 = document.querySelector('#d2')var d3 = document.querySelector('#d3')//2、绑定事件d1.onclick = function(){ console.log(this.id) }d2.onclick = function(){ console.log(this.id) }d3.onclick = function(){ console.log(this.id) }(2)运行结果:
单击红色区域:
单击紫色区域:
单击绿色区域:
事件捕获get!!!
注意:
触发顺序 :先捕获,后冒泡
focus,blur,change,submit,reset,select等事件不冒泡
二、阻止事件冒泡
(1)w3c标准 event.stopPropagation();但ie9以下版本不支持
//1.获取元素var d1 = document.querySelector('#d1')var d2 = document.querySelector('#d2')var d3 = document.querySelector('#d3')//2、绑定事件d1.onclick = function(){ console.log(this.id) }d2.onclick = function(){ console.log(this.id) }d3.onclick = function(e){ e.stopPropagation(); console.log(this.id) }会发现单击绿色区域时 ,没有依次触发外部的事件,事件冒泡被阻止:
(2)ie独有:event.cancelBubble = true;
//1.获取元素var d1 = document.querySelector('#d1')var d2 = document.querySelector('#d2')var d3 = document.querySelector('#d3')//2、绑定事件d1.onclick = function(){ console.log(this.id) }d2.onclick = function(){ console.log(this.id) }d3.onclick = function(e){ e.cancelBubble = true; console.log(this.id) }结果同(1)。
(3)合并取消:return false
在javascript的return false只会阻止默认行为,而是用jQuery的话则既阻止默认行为又防止对象冒泡。
关于"如何实现Javascript事件的捕获方式和冒泡方式"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
事件
元素
区域
方式
顺序
三个
篇文章
结果
绿色
例子
功能
更多
紫色
红色
结构
行为
视觉
面的
微软
运行
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
机房服务器需要配显示器吗
大华视频服务器默认账号密码
长沙网络安全员考试
数据库逐条显示命令
关系型数据库管理的方式
永登网络安全宣传
网络安全大赛使用什么软件
服务器 中文乱码
数字媒体网络技术的
软件工程专业数据库好吗
什么模型是软件开发模型
w7系统哪个可以装数据库
特立信网络技术有限公司招聘信息
如何把数据写入数据库sql
贵州省网络安全技术应用试点示范
ibm存储服务器配置
联志9k服务器机箱
鲲鹏网络技术商城
河北创品网络技术服务
致信如何设置登录服务器地址
mc进服务器时出现缺少mod
星速互联网科技
新一代软件开发服务有哪些
高新区信息化软件开发创新服务
网络安全大赛游戏
盗版对国家网络安全的影响
计算机网络技术好学吗人计算
数据库条目最大值
办税服务厅网络安全预案
网络安全管理部门怎么联系