如何实现Javascript事件的捕获方式和冒泡方式
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章将为大家详细讲解有关如何实现Javascript事件的捕获方式和冒泡方式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、事件处理模型事件冒泡、捕获:事件冒
千家信息网最后更新 2025年02月02日如何实现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安全错误
数据库的锁怎样保障安全
云主机服务器管理系统
万达金融网络安全吗
苹果id注册无法连接到服务器
软件开发费用摊几年
品牌网络技术推广好处
券商软件开发怎么样
软件开发环境介绍
电脑怎么云服务器连接
勤务管理系统服务器
腾讯云服务器部署个人项目
公安部网络安全管理团队
服务器下载东西
软件开发需求平台网址
邢台网络安全公司
有it男做软件开发吗
蚌埠软件开发培训贵不贵
戴尔 机架服务器
产品量产软件开发
俄罗斯军事网络安全
计算机网络技术配伍题
云货优选软件开发
网络技术服务淄博
北京巡检系统软件开发
武汉信息网络安全维护近期价格
软件开发部门指标
杭州直播软件开发哪家有名
计算机网络技术配伍题
游戏服务器需要升级吗
数据库安全性法律法规
我的世界战争服务器有什么用