如何实现Javascript事件的捕获方式和冒泡方式
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关如何实现Javascript事件的捕获方式和冒泡方式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、事件处理模型事件冒泡、捕获:事件冒
千家信息网最后更新 2026年11月03日如何实现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安全错误
数据库的锁怎样保障安全
互联网科技行业发展
互联网金融监管科技数据
今日互联网科技
科技互联网技术
互联网科技战争
互联网 科技创业
有马互联网科技
万达互联网科技
互联网科技公司需要的职位
互联网对科技的发展
智腾互联网科技有限公司
洛阳昕诺飞互联网科技有限公司
深圳无忧互联网科技
2021世界互联网领先科技成果发布
广州梦谷互联网科技有限公司领导
国产互联网科技公司
湖北辰鑫科技互联网
杭州融税互联网科技有限公司
平安好医生打造互联网科技医疗
网互联网络科技
科技互联网项目
合肥互联网科技公司
万易互联网科技
青岛互联网科技公司
善班互联网科技有限公司
栖莱科技互联网股份有限公司
全球顶尖互联网科技公司
昭通互联网科技选哪家
艺电能源互联网科技有限公司招聘
马化腾互联网科技教学