首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

事件捕获冒泡、委托

事件具有冒泡流和捕获流,两者刚好是反着来。 JavaScript原声监听事件addEventListener,接收两个参数,一个是方法,一个是布尔值,指定事件是否捕获冒泡阶段执行。...所以我们可以很直观打印输出事件冒泡捕获两个过程。 ? 输出顺序是body 捕获、test 捕获、test 冒泡、body 冒泡。...如果我body捕获阶段就阻止了事件流,那么目标函数是不会执行。 ? 只输出body 捕获。...stopPropagation既可以阻止事件捕获还能阻止事件冒泡,如果我test冒泡阻止了事件冒泡,那么就不会输出body冒泡。...对于事件事件捕获或者事件冒泡阶段处理并没有明显优劣之分,但是由于事件冒泡被所有主流浏览器兼容,从兼容性角度来说还是建议大家使用事件冒泡模型。这就是事件捕获冒泡、委托。

1K10

JS事件冒泡捕获

事件机制 ---- 事件触发三个阶段: window往事件触发处传播,遇到注册捕获事件会触发 传播到事件触发处时触发注册事件事件触发处往window传播,遇到注册冒泡事件会触发 事件触发一般会按照...|------------------------------------------- 但是有一个特例:如果给body中子节点同时注册冒泡捕获事件事件触发会按照注册顺序执行。...和outer上面,而且这两个事件处理函数useCapture选项为true,说明他们被注册捕获阶段。...此时进入冒泡阶段,inner上时间处理器得到执行 事件命中元素后开始向上冒泡,一路查找是否注册了冒泡阶段祖先元素上时间处理器。由于没有找到因此什么也没发生。...我们把时间注册冒泡阶段(addEventListeneruseCapture选项为false) var selector = document.querySelector.bind(document

2.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

事件流、事件捕获事件冒泡介绍

事件流、事件捕获事件冒泡介绍 最近有用到对应场景,下班了特地来整理下响应概念,巩固下知识。 我们点击页面时,事件发生时会在各元素节点按照一定顺序进行传播,这种传播过程就称作事件流。...事件流分为三个阶段: 1、事件捕获阶段 事件从window发出,不断向子元素寻找对应目标节点 2、事件目标阶段 事件找到了对应目标节点,即此时再往下已经没有对应节点 3、事件冒泡阶段 事件从节点位置网上回溯到文档根节点...我们使用给dom添加事件时一般使用addEventListener方法,该方法传入三个参数 1、对应事件名称如:click 2、函数:触发对应交互响应后执行函数 3、userCapture:指定事件捕获还是冒泡阶段执行...事件冒泡 可以看到,都是先触发捕获再触发冒泡事件,先从body(上)到btn(下),再从btn(下)到body(上)。...有个例子就讲挺有形象,就好比一个塑料扔到水里,先往下沉(捕获阶段),沉到最底部(目标阶段)再慢慢浮起来(冒泡阶段)。

1.3K00

微信小程序冒泡、非冒泡捕获捕获阻止、互斥事件

冒泡事件捕获事件 冒泡事件是,进行 捕获事件是从外向内,从大到小 冒泡事件bindtap one <view...测试 点击 区域,事件会从内到外从小到大Console`控制台显示 捕获事件capture-bind:tap <view id="one" class="one" capture-bind:tap="_...测试 点击 three区域,<em>事件</em>会从外到到,从大到小进行传递,Console`控制台显示 非<em>冒泡</em><em>事件</em>和<em>捕获</em>阻止<em>事件</em> 非<em>冒泡</em><em>事件</em>catchtap <view id="one" class="one" bindtap...测试 点击 three区域,事件从内到外传递被阻止,Console控制台显示 捕获阻止事件capture-catch:tap <view id="one" class="one" capture-catch...测试 点击 three区域,互斥事件绑定 一个 mut-bind 触发后,如果事件冒泡到其他节点上,其他节点上 mut-bind 绑定函数不会被触发,但 bind 绑定函数和 catch 绑定函数依旧会被触发

1K40

事件监听函数,以及事件捕获冒泡机制

事件经过所有节点都会受到事件影响,这个传播过程被称为DOM事件流 true是捕获,false是冒泡,默认为冒泡事件 1.addEventListener()--添加事件监听函数 给元素添加一个事件...3.利用事件捕获冒泡做点事情 addEventListener()和removeEventListener()其实拥有三个参数,刚才说过了,第一个表示触发条件,第二个表示触发事件,第三个参数正常情况下可以省略...,但是要知道它代表意思 用布尔值来表示,true或者false,默认是false true表示捕获阶段调用事件处理程序 false表示冒泡阶段调用事件处理程序 根据图片可以看出,捕获阶段要先于冒泡阶段...2.缺点:一个元素只能绑定一个事件处理函数,只会在事件冒泡中运行 DOM2级事件处理程序 该级别的事件处理程序,运用就是事件捕获冒泡机制 测试...btn.addEventListener("click", fun, false); btn.removeEventListener("click", fun, false); 1.优点:同时支持事件处理捕获冒泡阶段

1.2K10

深入理解JavaScript中事件传播机制:事件冒泡事件捕获

前言JavaScript中,事件冒泡事件捕获是两种不同事件传播方式。当一个事件被触发时,它会从最内层元素开始,然后逐级向外传播,直到最外层元素。...在这个过程中,事件会经过每一个元素,直到它到达最内层元素。本文中,我们将详细了解事件冒泡事件捕获,并探讨它们JavaScript中实现以及如何使用它们。...事件冒泡中,事件处理程序会按照它们被注册顺序执行,也就是说,先注册事件处理程序会先执行。相反,事件捕获中,事件处理程序会按照它们被注册相反顺序执行,也就是说,后注册事件处理程序会先执行。...这是因为事件从文档最外层开始向内传播,然后经过外部div、内部div和按钮,直到它到达按钮。结论JavaScript中,事件冒泡事件捕获是两种不同事件传播方式。...事件冒泡中,事件处理程序会按照它们被注册顺序执行;事件捕获中,事件处理程序会按照它们被注册相反顺序执行。我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

47521

用伪代码理解浏览器中事件冒泡以及捕获

,浏览器知道只是用户点 击位置x,y坐标,浏览器这个时候就开始从dom树根开始寻找,(这里是捕获 开始),x,y是否位置上,根有没有注册点击事件?...点击事件是否是捕获注册 ?...如果事件捕获注册,那么执行这个事件处理函数,该函数中,判断是否有 event.stopPropagation()来阻止事件捕获,若阻止了,那么该点击事件整个过程就完 成了,不论子节点是否注册了点击事件都不会执行到...然后接着往后找,进行同样 判断,知道找到叶子节点位置(这里是捕获结束)。同样要判断该叶子节点是否注册 了点击事件?是否阻止了事件?然后怎么来,就怎么回去(这里是冒泡开始)。...回 去过程中,判断每个节点是否注册了点击事件,是否是冒泡注册,如果是冒泡注册 事件,那么就执行,执行过程中如果发生了event.stopPropagation(),那么整个点击事件 就结束了

65320

分享近百道JavaScript 基础面试题,帮助你巩固JavaScript 基础知识

事件冒泡嵌套元素上触发事件通过 DOM 层次结构中父元素传播过程。 18. JavaScript 中 setTimeout() 函数作用是什么?...23.解释JavaScript中“Hoisting”概念。 Hoisting是一种 JavaScript 机制,其中变量和函数声明在编译阶段被移动到各自范围顶部,允许声明它们之前使用它们。... JavaScript 中如何检查对象是否具有特定属性? 可以使用 hasOwnProperty() 方法来检查对象是否具有特定属性。 40.解释JavaScript中事件捕获事件冒泡概念。...事件捕获事件冒泡是 DOM 中事件传播两个不同阶段。捕获阶段,事件首先被最外层祖先元素捕获冒泡阶段,从目标元素向上传播。 41....75.解释JavaScript中事件冒泡事件捕获概念。 事件冒泡是默认行为,其中子元素上触发事件通过其父元素向上传播。事件捕获则相反,父级捕获事件,然后向下传播到目标元素。 76.

16310

JAVA设计模式17:状态模式,允许对象不同内部状态下改变行为

一、什么是状态模式 状态模式是一种行为型设计模式,它允许对象不同内部状态下改变行为。...状态模式通过将对象行为封装在不同状态对象中,使得对象根据其内部状态改变而改变行为,而不是通过大量条件语句来判断。这样可以简化复杂条件判断逻辑,并提高代码可读性和可维护性。...和 DownState,它们继承自 ElevatorState 并实现 handle 方法,代码如下。...游戏角色状态管理:角色游戏中可以处于不同状态(如正常、受伤、死亡),不同状态下角色行为和属性也会发生变化。...它允许对象不同内部状态下改变行为。状态模式通过将对象行为封装在不同状态对象中,使得对象根据其内部状态改变而改变行为,而不通过大量条件语句来判断。

46080

分享 10 道常见 JavaScript 面试题

JavaScript 中Hoisting是什么? Hoisting是 JavaScript 中一种行为,其中变量和函数声明被移动到作用域顶部。这意味着可以代码中声明变量和函数之前使用它们。...讲解JavaScript中事件冒泡捕获 事件冒泡捕获 DOM 中传播事件两种方式。 事件冒泡是指事件首先被最内层元素捕获和处理,然后传播到外层元素。...这是事件冒泡一个例子。 如果我们 addEventListener 中使用 useCapture 参数并将其设置为 true,则事件将首先被 div 元素捕获,然后传播到 p 元素。...这是一个事件捕获例子。 4. 用 JavaScript 解释“this” JavaScript 中,this 指的是函数是方法对象。...this 值可以根据函数调用方式而改变。 5. 解释原型继承 JavaScript 中工作原理 JavaScript 中,所有对象都有一个原型,它们从中继承属性和方法。

13810

字节跳动最爱考前端面试题:JavaScript 基础

,"DOM2级事件"规定事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。...首先发生事件捕获,为截获事件提供机会。然后是实际目标接受事件。最后一个阶段是时间冒泡阶段,可以在这个阶段对事件做出响应。...虽然捕获阶段规范中规定不允许响应事件,但是实际上还是会执行,所以有两次机会获取到目标对象。 <!...子级冒泡 子级捕获 父级冒泡 且当事件处于目标阶段时,事件调用顺序决定于绑定事件书写顺序,按上面的例子为,先调用冒泡阶段事件处理程序,再调用捕获阶段事件处理程序。...onload 是所以加载完成之后执行 问:怎么加事件监听,两种 onclick 和 addEventListener 问:事件传播机制(事件流) 冒泡捕获 (4)问:说一下原型链和原型链继承吧 所有普通

1.3K20

2022秋招前端面试题(九)(附答案)

,"DOM2级事件"规定事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。...虽然捕获阶段规范中规定不允许响应事件,但是实际上还是会执行,所以有两次机会获取到目标对象。复制代码当容器元素及嵌套元素,即在捕获阶段又在冒泡阶段调用事件处理程序时:事件按DOM事件顺序执行事件处理程序:父级捕获子级捕获子级冒泡父级冒泡且当事件处于目标阶段时...,事件调用顺序决定于绑定事件书写顺序,按上面的例子为,先调用冒泡阶段事件处理程序,再调用捕获阶段事件处理程序。...依次alert出“子集冒泡”,“子集捕获”。事件是如何实现?基于发布订阅模式,就是浏览器加载时候会读取事件相关代码,但是只有实际等到具体事件触发时候才会执行。

2.6K30

React核心原理与虚拟DOM

React自己实现了一套事件机制,自己模拟了事件冒泡捕获过程,采用了事件代理,批量更新等方法,并且抹平了各个浏览器兼容性问题。...React事件与原生事件执行顺序react所有事件都挂载document中当真实dom触发后冒泡到document后才会对react事件进行处理所以原生事件会先执行然后执行react合成事件最后执行真正在...HOC 不会修改传入组件,也不会使用继承来复制行为。相反,HOC 通过将组件包装在容器组件中来组成新组件。HOC 是纯函数,没有副作用。...跨浏览器兼容React基于VitrualDom自己实现了一套自己事件机制,自己模拟了事件冒泡捕获过程,采用了事件代理,批量更新等方法,抹平了各个浏览器事件兼容性问题。...,并将所有的事件都代理到document上,自己模拟了事件冒泡捕获过程,并且进行统一事件分发。

1.9K30

2022秋招前端面试题(六)(附答案)

前端vue面试题详细解答事件事件流是网页元素接收事件顺序,"DOM2级事件"规定事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。首先发生事件捕获,为截获事件提供机会。...然后是实际目标接受事件。最后一个阶段是时间冒泡阶段,可以在这个阶段对事件做出响应。虽然捕获阶段规范中规定不允许响应事件,但是实际上还是会执行,所以有两次机会获取到目标对象。复制代码当容器元素及嵌套元素,即在捕获阶段又在冒泡阶段调用事件处理程序时:事件按DOM事件顺序执行事件处理程序:父级捕获子级捕获子级冒泡父级冒泡且当事件处于目标阶段时...,事件调用顺序决定于绑定事件书写顺序,按上面的例子为,先调用冒泡阶段事件处理程序,再调用捕获阶段事件处理程序。...window 传播,遇到注册冒泡事件会触发事件触发一般来说会按照上面的顺序进行,但是也有特例,如果给一个 body 中子节点同时注册冒泡捕获事件事件触发会按照注册顺序执行。

94120

10个流行JavaScript面试题

4.解释一下变量提升 变量提升是JavaScript默认行为,这意味着将所有变量声明移动到当前作用域顶部,并且可以声明之前使用变量。初始化不会被提升,提升仅作用于变量声明。...将事件从任务队列传输到调用堆栈称为事件循环。 6. 如何理解事件委托 DOM树上绑定事件监听器并使用JS事件处理程序是处理客户端事件响应典型方法。...通常,事件传播(捕获冒泡允许我们实现事件委托。冒泡意味着当触发子元素(目标)时,也可以逐层触发该子元素父元素,直到它碰到DOM绑定原始监听器(当前目标)。...捕获属性将事件阶段转换为捕获阶段,让事件下移到元素; 因此,触发方向与冒泡阶段相反。捕获默认值为 false。 7. 如何理解高阶函数 JavaScript中一切都是对象,包括函数。...9.解释原型继承是如何工作 JavaScript不是一种面向对象友好编程语言,但它仍然使用继承思想来实现依赖关系,并使用许多内置函数使其灵活使用。

44610

10个流行JavaScript面试题

4.解释一下变量提升 变量提升是JavaScript默认行为,这意味着将所有变量声明移动到当前作用域顶部,并且可以声明之前使用变量。初始化不会被提升,提升仅作用于变量声明。...将事件从任务队列传输到调用堆栈称为事件循环。 6. 如何理解事件委托 DOM树上绑定事件监听器并使用JS事件处理程序是处理客户端事件响应典型方法。...通常,事件传播(捕获冒泡允许我们实现事件委托。 冒泡意味着当触发子元素(目标)时,也可以逐层触发该子元素父元素,直到它碰到DOM绑定原始监听器(当前目标)。...捕获属性将事件阶段转换为捕获阶段,让事件下移到元素; 因此,触发方向与冒泡阶段相反。 捕获默认值为false。 7. 如何理解高阶函数 JavaScript中一切都是对象,包括函数。...9.解释原型继承是如何工作 JavaScript不是一种面向对象友好编程语言,但它仍然使用继承思想来实现依赖关系,并使用许多内置函数使其灵活使用。

67040

10 个常问 JS 面试题

4.解释一下变量提升 变量提升是JavaScript默认行为,这意味着将所有变量声明移动到当前作用域顶部,并且可以声明之前使用变量。初始化不会被提升,提升仅作用于变量声明。...将事件从任务队列传输到调用堆栈称为事件循环。 6. 如何理解事件委托 DOM树上绑定事件监听器并使用JS事件处理程序是处理客户端事件响应典型方法。...通常,事件传播(捕获冒泡允许我们实现事件委托。 冒泡意味着当触发子元素(目标)时,也可以逐层触发该子元素父元素,直到它碰到DOM绑定原始监听器(当前目标)。...捕获属性将事件阶段转换为捕获阶段,让事件下移到元素; 因此,触发方向与冒泡阶段相反。 捕获默认值为false。 7. 如何理解高阶函数 JavaScript中一切都是对象,包括函数。...9.解释原型继承是如何工作 JavaScript不是一种面向对象友好编程语言,但它仍然使用继承思想来实现依赖关系,并使用许多内置函数使其灵活使用。

58730

JavaScript捕获冒泡探讨

上个星期微博中一个关于javascript捕获冒泡代码讨论,可能没有动手实现一篇的人无法给出确定答案。 这里再来回顾一下之前三条微博。...事件执行顺序 JavaScript冒泡捕获考察题目看图回答问题,晚上公布答案。 问:点击Li,JS执行顺序是什么? ?...捕获 阶段:事件对象到达事件目标之前事件对象必须从window经过目标的祖先节点传播到事件目标。 这个阶段被我们称之为捕获阶段。在这个阶段注册事件监听器事件到达目标前必须先处理事件。...那么对应事件对象在到达此阶段时就会终止传播。 冒泡 阶段: 事件对象以一个与捕获阶段相反方向从事件目标传播经过祖先节点传播到window。这个阶段被称之为冒泡阶段。...在此阶段注册事件监听器会对相应冒泡事件进行处理。 一个事件完成了所有阶段传播路径后,它Event.currentTarget会被设置为null并且Event.eventPhase会被设为0。

46520
领券