前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >事件冒泡与事件捕获

事件冒泡与事件捕获

作者头像
epoos
发布于 2022-06-06 08:06:05
发布于 2022-06-06 08:06:05
1.7K00
代码可运行
举报
文章被收录于专栏:epoos.comepoos.com
运行总次数:0
代码可运行

javascript 的事件捕获和事件冒泡之前一直没能弄明白,知道看到一个例子。 利用丢一颗石头入水的例子,就能够非常形象了,如图所示:

事件捕获和事件冒泡就像是一颗石头(点击事件)投入水中: 首先是最外层水面(html)接触(捕获)石头,然后石头下沉,内层的水(body/dom 父节点)捕获石头,直到池塘底部(目标节点)。 当石头到达池塘底部(事件被捕获)之后,产生了一个气泡,然后就开始了冒泡阶段 由底部(目标元素)产生的气泡,由内而外,不断向上冒泡,直到最外面(html标签)结束。

好吧,我知道画的有点丑,但是不可否认,确实挺形象的。 如果还是有些迷糊,那么可以再看一下下面这张图。点击可查看示例

去示例中试一试便清楚了~

处理事件

理解了事件的捕获和冒泡机制,对于事件处理就好办了。

监听事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @param { event } 事件
 * @param { functionEvent } 事件处理函数
 * @param { capture } 是否在捕获阶段触发事件
 **/
element.addEventListener(event, functionEvent, useCapture)

事件和事件处理函数很好理解。 capture 表示是否在捕获阶段处理函数 ps:默认为 false,表示在冒泡阶段处理函数,ie 低版本浏览器不支持在捕获阶段处理函数。

阻止默认事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
event.preventDefault()  // 阻止事件默认动作,比如阻止 submit 按钮默认提交
event.stopPropagation() // 阻止捕获 和 冒泡阶段中事件的进一步传播,比如是在‘石头’下沉或者‘气泡’冒泡的过程中使之突然消失

事件代理: 从上面事件机制可以看出,如果没有外部干扰,在子节点上触发的事件,在捕获和冒泡最终都会经过父节点 因此,我们可以将事件处理函数绑定在父节点上面

这样做的好处一个是可以不关心子元素是同步还是异步的 另一个是如果有多个子元素,可以不用绑定多个事件(在异步列表 click 事件中很常见)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ul id="ulId">
  <li>list1</li>
  <li>list2</li>
  <li>list3</li>
</ul>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.getElementById('ulId').addEventListener('click', function(e) {
  var innerHTML = e.target.innerHTML // e.target 表示触发事件的元素(石头)
  if(innerHTML === 'list1') {
    console.log(1)
  } else {
    console.log(0)
  }
}, false)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端day16-JS(WebApi)学习笔记(事件补充、事件冒泡与捕获)
var code = e.keyCode || e.charCode || e.which;
帅的一麻皮
2020/05/05
1.8K0
JS事件流、事件冒泡、阻止冒泡、事件捕获(一看就懂)
事件是可以被 JavaScript 侦测到的行为。 鼠标点击、鼠标移动、鼠标滚动、按下键盘,浏览器窗口大小的改变,网页加载完成,关闭网页等等都会发生事件。
别盯着我的名字看
2022/06/09
17K0
JS事件流、事件冒泡、阻止冒泡、事件捕获(一看就懂)
JavaScript第十一弹——事件流!事件代理!我懂了!
Hello小伙伴们,好久不见,最近实在太忙了,所以没有更!今天回来更文突然发现了一件尴尬的事情,两个第九弹哇,好像也改不了题目呀,那我们今天只能直接第十一弹了
萌兔IT
2019/07/25
4890
JavaScript第十一弹——事件流!事件代理!我懂了!
面试官:什么是js中的事件流以及事件模型?
我们先从字面意义上理解,事件我们已经知道了是什么,那流呢?我们看看百度对于流的解释
inline705
2022/03/01
2K0
面试官:什么是js中的事件流以及事件模型?
深入理解 DOM 事件机制
本文主要介绍 DOM 事件级别、DOM 事件模型、事件流、事件代理和 Event 对象常见的应用,希望对你们有些帮助和启发!
小生方勤
2019/06/02
2.9K1
事件
事件 JavaScript和HTML的交互是通过事件实现的。JavaScript采用异步事件驱动编程模型,当文档、浏览器、元素或与之相关对象发生特定事情时,浏览器会产生事件。如果JavaScript关注特定类型事件,那么它可以注册当这类事件发生时要调用的句柄。事件是某个行为或者触发,比如点击、鼠标移动..... 当用户点击鼠标时 当网页已加载时 当图像已加载时 当鼠标移动到元素上时 当用户触发按键时... 事件流 事件流描述的是从页面中接收事件的顺序,比如有两个嵌套的div,点击了内层的div,这时候是内层
小胖
2018/06/27
1.4K0
Vue3 事件冒泡踩坑实录:5种实用的阻止冒泡方案
在 Vue3 项目开发中,事件冒泡经常会导致一些意想不到的问题。比如点击子元素时,不小心触发了父元素的事件,或者在弹窗组件中点击内容区域却意外关闭了弹窗。
予果
2024/11/29
5870
Vue3 事件冒泡踩坑实录:5种实用的阻止冒泡方案
深入理解事件
javascript 给 DOM 绑定事件处理函数总的来说有2种方式:在 html 文档中绑定、在 js 代码中绑定。下面的方式1、方式2属于在 html 中绑定事件,方式3、方式4和方式5属于在js代码中绑定事件,其中,方式4和5属于事件监听,而方式5是最推荐的做法。
Chor
2019/11/08
8430
JavaScript事件机制实现的一些理解
我们都知道JavaScript是一门事件驱动的语言,想要进一步深入了解JavaScript我们就要搞明白其中的事件机制。
henu_Newxc03
2021/12/28
5620
JavaScript事件机制实现的一些理解
JavaScript事件详解
想必大家对JavaScript的事件都不陌生吧,大多数在网站开发的时候都会用到,这也是JavaScript的基本功之一,本文就为各位梳理一下相关知识。
用户8983410
2021/09/19
7220
解析Javascript事件冒泡机制
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://louluan.blog.csdn.net/article/details/23927347
亦山
2019/05/25
7510
js事件流机制
在JavaScript中事件流是指一个事件沿特定数据结构传播的一个过程。整个事件流总共包含三个阶段(从dome2来说):1.事件捕获阶段、2.处于事件目标阶段、3.事件冒泡阶段。下面我们来看一个图,只要是谈到事件流都会看到的一个图:
OECOM
2020/07/01
1.5K0
【Web前端】嵌套元素的“事件”冒泡?!
事件处理是创建交互式用户界面的关键部分,浏览器通过事件系统让我们能够捕获和响应用户的输入,比如点击、鼠标移动、键盘输入等。
一条晒干的咸鱼
2024/11/19
870
【Web前端】嵌套元素的“事件”冒泡?!
DOM事件的传播机制
DOM事件的传播机制是指当一个事件在DOM树中触发时,它是如何在各个元素之间传播的。DOM事件传播机制分为三个阶段:捕获阶段、目标阶段和冒泡阶段。此外,还有一种常用的技术称为事件委托,它能够简化事件处理程序的绑定和管理。本文将详细介绍这些概念,并提供相应的代码示例。
can4hou6joeng4
2023/11/17
2060
javascript事件流的原理
事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字。
前端老鸟
2019/08/26
1K0
JavaScript事件
JavaScript事件 对于事件来讲,首先,我们需要了解这样几个概念:事件;事件处理程序;事件类型;事件流;事件冒泡;事件捕获;事件对象;事件模拟,事件方面的性能优化(事件委托、移除事件处理程序); 事件的概念 事件:指的是文档或者浏览器窗口中发生的一些特定交互瞬间。我们可以通过监听器(或者处理程序)来预定事件,以便事件发生的时候执行相应的代码。 事件处理程序:我们用户在页面中进行的点击这个动作,鼠标移动的动作,网页页面加载完成的动作等,都可以称之为事件名称,即:click、mousemove、loa
汤高
2018/01/11
2K0
JavaScript事件
JS中DOM事件流总结
本文参照:https://segmentfault.com/a/1190000015603334
前端小tips
2021/11/24
3.9K0
JS中DOM事件流总结
《现代Javascript高级教程》深入理解事件处理和传播机制
JavaScript中的事件流是一种机制,用于描述和处理事件在DOM树中的传播过程。了解事件流的属性和工作原理对于编写高效的事件处理代码和实现复杂的交互功能至关重要。本文将详细介绍JavaScript事件流的发展流程、属性以及应用场景,并提供一些代码示例和引用资料,帮助读者深入理解并应用这一重要的前端技术。
linwu
2023/07/27
2440
事件高级
eventTarget.addEventListener()方法将指定的监听器注册到 eventTarget(目标对象)上,当该对象触发指定的事件时,就会执行事件处理函数。
星辰_大海
2020/09/30
1.4K0
深入理解浏览器事件模型的概念和原理
大家好,我是腾讯云开发者社区的 Front_Yue,本篇文章将带领大家深入探讨浏览器事件模型的概念和原理
Front_Yue
2024/01/29
7781
深入理解浏览器事件模型的概念和原理
相关推荐
前端day16-JS(WebApi)学习笔记(事件补充、事件冒泡与捕获)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文