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

DOM事件传播机制

引言--DOM事件传播机制是指当一个事件在DOM触发时,它是如何在各个元素之间传播的。DOM事件传播机制分为三个阶段:捕获阶段、目标阶段和冒泡阶段。...在DOM事件是指用户与页面交互时发生的动作,比如点击、鼠标移动等。而事件流则是指这些事件在DOM传播的路径。...通过这种方式,就可以避免让程序不断地去检查事件是否发生,让程序在等待事件发生的同时,可以继续做其他的任务。...事件冒泡事件冒泡是指在DOM事件从目标元素开始向上冒泡传播的过程。也就是说,在冒泡阶段,事件会依次触发父级元素的相同类型事件处理程序。...事件捕获流事件捕获是指在DOM事件从最外层的父级元素开始向下捕获传播的过程。也就是说,在捕获阶段,事件会依次触发父级元素的相同类型事件处理程序。

15730

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

什么是 JavaScript 事件传播事件传播是指事件由 DOM 层次结构的多个元素通过捕获或冒泡阶段处理的过程。 22. JavaScript 如何处理异常?...在 JavaScript 如何检查对象是否具有特定属性? 可以使用 hasOwnProperty() 方法来检查对象是否具有特定属性。 40.解释JavaScript事件捕获和事件冒泡的概念。...事件捕获和事件冒泡是 DOM 事件传播的两个不同阶段。在捕获阶段,事件首先被最外层的祖先元素捕获,在冒泡阶段,从目标元素向上传播。 41....事件传播是一个事件被DOM的多个元素通过事件捕获或事件冒泡处理的过程。 68. JavaScript concat() 方法的用途是什么?...事件冒泡是默认行为,其中在子元素上触发的事件通过其父元素向上传播事件捕获则相反,在父级捕获事件,然后向下传播到目标元素。 76. JavaScript 的 bind() 方法的用途是什么?

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

前端系列第2集-如何事件冒泡后获取?

事件冒泡是指当一个元素上的事件被触发后,该事件会从该元素开始向上冒泡,直到传播到文档对象,并且可以被其他元素捕获。默认情况下,事件是先捕获后冒泡。...    }   }); 在这个例子,我们使用事件委托将单击事件监听器添加到列表元素上,并在事件处理程序检查被单击的元素是否为按钮。...myList 元素上,并使用 if 语句检查被单击的元素是否为按钮。...这确保了事件冒泡后获取,因为我们将监听器添加到父元素上,而不是每个子元素上。 总结 在事件处理事件冒泡事件捕获是两种常见的事件传播机制。默认情况下,事件先捕获后冒泡。...由于事件冒泡会在整个文档传播,因此在父元素上添加事件监听器可以确保事件冒泡后获取。 使用 setTimeout():将事件处理程序延迟一小段时间再执行,以确保事件有时间传播到父元素

16820

事件委托和this

事件在目标节点上被触发,然后会逆向回流,直到传播至最外层的文档节点。 (3)冒泡阶段(Bubble Phase)   事件在目标元素上触发后,并不在这个元素上终止。...它会随着DOM一层层向上冒泡,回溯到根节点。   冒泡过程非常有用。它将我们从对特定元素事件监听释放出来,如果没有事件冒泡,我们需要监听很多不同的元素来确保捕获到想要的事件。...(2)如何阻止事件冒泡 stopPropagation:告诉DOM事件停止冒泡 stopImmediatePropagation,它不仅停止冒泡,也会阻止这个元素上其它监听当前事件的处理程序触发。...然而,停止传播事件时要小心,因为你不知道是否有其它上层的DOM元素可能需要知道当前事件。 preventDefault,这个方法会阻止浏览器处理事件的默认行为。...可以给它们共同的祖先元素设置监听处理程序,但是如果共同的祖先元素在DOM处于较高层次(离根节点比较近),就会监听很多同辈元素事件,会造成意想不到的结果;当然,也可能存在逻辑或结构原因要分开这两个元素

78530

今天聊聊DOM事件传播机制

通过这种方式,就可以避免让程序不断地去检查事件是否发生,让程序在等待事件发生的同时,可以继续做其他的任务。...事件冒泡流 IE 的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。... div 元素,那么这个 click 事件沿 DOM 向上传播,在每一级节点上都会发生,按照如下顺序进行传播: div body html document 所有现代浏览器都支持事件冒泡,但在具体实现在还是有一些差别...,document 对象首先接收到 click 事件,然后事件沿 DOM 依次向下,一直传播事件的实际目标,即 div 元素: document html body div IE9、Firefox、...事件冒泡(event bubbling),是指事件开始时由最具体的元素(文档嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。

96520

腾讯前端一面必会面试题合集

事件是用户操作网页时发生的交互动作或者网页本身的一些操作,现代浏览器一共有三种事件模型:DOM0 级事件模型,这种模型不会传播,所以没有事件流的概念,但是现在有的浏览器支持以冒泡的方式实现,它可以在网页中直接定义监听函数...直接在dom对象上注册事件名称,就是DOM0写法。IE 事件模型,在该事件模型,一次事件共有两个过程,事件处理阶段和事件冒泡阶段。事件处理阶段会首先执行目标元素绑定的监听事件。...然后是事件冒泡阶段,冒泡指的是事件从目标元素冒泡到 document,依次检查经过的节点是否绑定了事件监听函数,如果有则执行。...捕获指的是事件从 document 一直向下传播到目标元素,依次检查经过的节点是否绑定了事件监听函数,如果有则执行。后面两个阶段和 IE 事件模型的两个阶段相同。...第一种方式,使用 instanceof 运算符来判断构造函数的 prototype 属性是否出现在对象的原型链的任何位置。

40930

前端高频面试题汇总(二)

事件触发的过程是怎样的事件触发有三个阶段:window 往事件触发处传播,遇到注册的捕获事件会触发传播事件触发处时触发注册的事件事件触发处往 window 传播,遇到注册的冒泡事件会触发事件触发一般来说会按照上面的顺序进行...直接在dom对象上注册事件名称,就是DOM0写法。IE 事件模型,在该事件模型,一次事件共有两个过程,事件处理阶段和事件冒泡阶段。事件处理阶段会首先执行目标元素绑定的监听事件。...然后是事件冒泡阶段,冒泡指的是事件从目标元素冒泡到 document,依次检查经过的节点是否绑定了事件监听函数,如果有则执行。...捕获指的是事件从 document 一直向下传播到目标元素,依次检查经过的节点是否绑定了事件监听函数,如果有则执行。后面两个阶段和 IE 事件模型的两个阶段相同。...这种事件模型,事件绑定的函数是addEventListener,其中第三个参数可以指定事件是否在捕获阶段执行。如何优化动画?

54820

JavaScript面试问题:事件委托和this

浏览器会向下遍历DOM直到找到触发事件元素,一旦浏览器找到该元素事件流就进入事件目标阶段,该阶段完成后,浏览器会沿DOM向上冒泡直到最顶层容器,看看是否有其它元素需要使用同一个事件。...然而,停止传播事件时要小心,因为你不知道是否有其它上层的DOM元素可能需要知道当前事件。 还有第三个可以控制元素如何事件作出回应的方法。...可以给它们共同的祖先元素设置监听处理程序,但是如果共同的祖先元素在DOM处于较高层次(离根节点比较近),就会监听很多同辈元素事件,会造成意想不到的结果;当然,也可能存在逻辑或结构原因要分开这两个元素...使用事件委托能减少监听器数量,在元素的容器上绑定事件意味着只需要一个监听器。这种方法的缺点是,父容器的侦听器可能需要检查事件来选择正确的操作,而元素本身不会是一个监听器。...浏览器不会清理页面,因此在单页应用,所有从内存清理不当的碎片都会留在内存,这些碎片会降低程序性能。 当在页面添加交互时,仔细考虑一下,是否真的需要去监听元素

1.3K50

JS事件

事件冒泡 “IE的事件流叫做事件冒泡,即时间最开始由最具体的元素接收,然后逐级向上传播到较为不具体的节点(文档)。 例: <!...事件传播顺序如下: div body html document 也就是说,click 事件首先在元素 div 上发生,然后 click 事件沿 DOM 向上传播,每一级的节点上都会发生,直至传播到...中所述案例,则单击 div 元素后,事件触发顺序如下: document html body div 也就是在事件捕获过程,document 对象首先接收到 click 事件,然后事件沿 DOM 向下依次传播...,直到传播事件的实际目标,即 div 元素。...输出结果 可是,当我们将子级的冒泡和捕获在js位置调换后,输出的则是……子级先冒泡,再捕获!如下: ? 输出结果2 这是什么原因呢?? 下期——事件处理顺序,进一步揭晓。

5.7K10

javascript事件流的原理

1、两种事件流模型 事件传播的顺序对应浏览器的两种事件流模型:捕获型事件流和冒泡事件流。 冒泡事件流:事件传播是从最特定的事件目标到最不特定的事件目标。即从DOM的叶子到根。...【推荐】 捕获型事件流:事件传播是从最不特定的事件目标到最特定的事件目标。即从DOM的根到叶子。 事件捕获的思想就是不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。 上面这段html代码,单击了页面元素, 在冒泡事件click事件传播顺序为 —》—》—》document 在捕获型事件click事件传播顺序为...document—》—》—》 note: 1)、所有现代浏览器都支持事件冒泡,但在具体实现略有差别: IE5.5及更早版本事件冒泡会跳过元素(从body直接跳到document)。...处于目标阶段:事件在 上发生并处理。但是事件处理会被看成是冒泡阶段的一部分。 冒泡阶段:事件传播回文档。

1K10

谈谈React事件机制和未来(react-events)

, 和*over/*leave事件相比, 它们不支持事件冒泡, *enter会给所有进入的元素发送事件, 行为有点类似于:hover; 而*over在进入元素后,还会冒泡通知其上级....EventPropagators 按照DOM事件传播的两个阶段,遍历React组件,并收集所有组件的事件处理器. EventBatching 负责批量执行事件队列和事件处理器,处理事件冒泡。...在props初始化和更新时会进行事件绑定。首先React会判断元素是否是媒体类型,媒体类型的事件是无法在Document监听的,所以会直接在元素上进行绑定 2. 反之就在Document上绑定....(event) { // 以_targetInst为基点, 按照DOM事件传播的顺序遍历组件 traverseTwoPhase(event....函数则是简单查找当前节点是否有对应的事件处理器: function accumulateDirectionalDispatches(inst, phase, event) { // 检查是否存在事件处理器

2.2K40

前端学习(51)~事件传播事件冒泡

DOM事件事件传播的三个阶段是:事件捕获、事件冒泡和目标。 事件捕获阶段:事件从祖先元素往子元素查找(DOM树结构),直到捕获到事件目标 target。...在这个过程,默认情况下,事件相应的监听函数是不会被触发的。 事件目标:当到达目标元素之后,执行目标元素事件相应的处理函数。如果没有绑定监听函数,那就不执行。...事件冒泡阶段:事件事件目标 target 开始,从子元素冒泡祖先元素冒泡,直到页面的最上一级标签。...这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM的最上层。 通俗来讲,冒泡指的是:子元素事件被触发时,父元素的同样的事件也会被触发。取消冒泡就是取消这种机制。...意思是,事件不会往父元素那里传递。 我们检查一个元素是否冒泡,可以通过事件的以下参数: event.bubbles 如果返回值为true,说明该事件冒泡;反之则相反。

92720

js --- 事件

1.事件流   事件发生时会在元素节点与根节点之间按照特定的顺序传播,路径所经过的所有节点都会收到该事件,这个传播过程即DOM事件流。...2.两种事件流模型   1.冒泡事件流:事件传播是从最特定的事件目标到最不特定的事件目标。即从DOM的叶子到根   2.捕获型事件流:事件传播是从最不特定的事件目标到最特定的事件目标。...即从DOM的根到叶子 3.绑定事件的方法   1.普通浏览器 绑定事件:addEventListener(type,name,bool);     删除事件:removeEventListener...事件执行函数   bool true 为事件捕获 && false 为事件冒泡 5.阻止事件冒泡事件捕获 1.阻止事件冒泡 不 阻止默认行为     event.stopPropagation...();   2.阻止事件冒泡 和 默认行为     return false   3.阻止默认行为 不 阻止事件冒泡     event.preventDefault();

7.6K30

深入理解事件

如果是通过事件冒泡或者是事件捕获触发outA的click事件,那么函数的执行顺序会有变化。 3. 事件捕获和事件冒泡 我们知道HTML元素是可以嵌套的,形成类似于的层次关系。...事件发生时会在元素节点与根节点之间按照特定的顺序如流水一样传播,路径所经过的所有节点都会收到该事件,这个传播过程即事件流。...2) currentTarget: 绑定事件的对象,恒等于this,可能出现在事件流的任意一个阶段。动态变化的。...阻止事件冒泡和捕获 默认情况下,多个事件处理函数会按照DOM事件流模型的顺序执行。如果子元素上发生某个事件,不需要执行父元素上注册的事件处理函数,那么我们可以停止捕获和冒泡,避免没有意义的函数调用。...前面提到的5种事件绑定方式,都可以实现阻止事件传播。由于第5种方式,是最推荐的做法。所以我们基于第5种方式,看看如何阻止事件传播行为。

81640

javascript入门到进阶 - 事件冒泡事件委托详解

事件冒泡 ❝当一个子元素事件被触发的时候(例如onclick事件), 该事件会从事件(被电击的元素) 开始逐个向上传播,触发父级元素的点击事件 ❞ 上图吧 ?...,然后点击事件沿着DOM向上传播 在每一个节点上触发,直到传播到document对象 我自己画了一个事件冒泡的示意图如下 ?...这里写图片描述 事件委托 ❝什么是事件委托: ❞ ❝事件委托——给父元素绑定事件,用来监听子元素冒泡事件,并找到是哪个子元素事件。...事件监听器会分析从子元素冒泡上来的事件,找到是哪个子元素事件。...//target表示在事件冒泡触发事件的源元素,在IE是srcElement 6.

58420

24 事件绑定、事件修饰符与事件三阶段

那么三种方式如何使用呢? 如果是简单的代码,直接写在表达式;如果代码较多,扩展出一个事件方法,写在mehtods;如果默认的事件绑定方式不能满足需求,再用第三种方法。...-- 事件不再冒泡,停止传播 --> <a v-on:click.stop="doThis"...附useCapture的参数说明: useCapture 可选 Boolean,在DOM,注册了listener的元素是否要先于它下面的EventTarget,调用该listener。...当useCapture(设为true) 时,沿着DOM向上冒泡事件,不会触发listener。...当一个元素嵌套了另一个元素,并且两个元素都对同一事件注册了一个处理函数时,所发生的事件冒泡事件捕获是两种不同的事件传播方式。事件传播模式决定了元素以哪个顺序接收事件

1.3K10

事件冒泡传播

举栗子 事件输出hello world 事件有两种,一种为事件传播,一种是事件冒泡 事件传播事件冒泡 这还要从遥远的荒诞说起,两家网景和ie,为了能争夺市场,互相使用相反的技术,当网景使用事件传播的时候...(两个正好相反)这个时候w3c来了,为了能规范规定,直接取折中,当事件发生时,先发生向下传播,当到底了以后再次使用事件冒泡,逐渐的冒泡到顶层window DOM为一个完整的 使用事件传播输出hello...否则为事件传播 冒泡为上,事件传播为下,事件传播优于事件冒泡 [15.gif] 可以明确的知道,此时为false为冒泡,即全部向上传播,这个比较简单不在阐述 阻止进一步冒泡 // 获取元素 var div1...,为向下,且传播优先于冒泡 并且事件先进行向上传,直到遇到设置为冒泡元素的时候,停止向上传,开始进行从上到下的捕获,先最外层捕获,然后逐层捕获,直到完成。...你点击的是文字"); }, true); [17.gif] 传播优先于冒泡 js如下 // 获取元素 var div1 = document.getElementById("div1"); var div2

85960

JavaScript 事件机制

通俗地来说, JavaScript 事件机制描述的是事件在 DOM 里面的传递顺序,以及我们可以对这些事件做出如何的响应。 假设我们具有一个 ul 元素,其包括很多 li 元素。...target 是触发事件的某个具体的对象,只会出现在事件机制的目标阶段,即“谁触发了事件,谁就是 target ”。 currentTarget 是绑定事件的对象。...在 target 注册的监听器,不分捕获和冒泡 既然我们得出了“先捕获,后冒泡”的结论,那么无论 addEventListener 的注册顺序如何改变,最终效果应该是一样的。理想很丰满,现实很骨感。...在前面的实验代码,我们给 list 的捕获阶段监听器添加中断事件传播的方法。...但通过事件传播机制,我们可以在 ul 注册 eventListener 。 这样的好处有亮点: 节省内存 不需要给子节点注销事件 参考资料 DOM 的事件傳遞機制:捕獲與冒泡

84430

jQueryfind&filter、live&bind对比介绍及图片懒加载

live方法的处理机制就是把事件绑定在DOM的根节点上,而不是直接绑定在某个元素上。...事件不断冒泡,直到DOM的根节点上,默认情况下,根节点上就绑定了这个click事件 4. 执行由live绑定的click事件 5. 检测绑定事件的对象是否存在,判断是否需要继续执行绑定的事件。...由于只有在事件发生的时候,live方法才会去检测绑定事件的对象是否存在,所以live方法可以实现后来新增的元素也可实现事件的绑定。...当一个元素采用live方法进行事件的绑定的时候,如果想阻止事件的传递或冒泡,就要在函数return false,仅仅调用stopPropagation()是无法实现阻止事件的传递或者冒泡的 三、 图片懒加载...当页面滚动的时候,再判断图片已经缓存的位置值是否出现在可视区域内,进行替换src加载。当所有的图片都加载完之后,将相应的触发事件卸载,避免重复操作引起的内存泄漏。

68631
领券