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

JavaScript捕获和冒泡探讨

事件执行顺序 JavaScript冒泡和捕获考察题目看图回答问题,晚上公布答案。 问:点击Li,JS的执行顺序是什么? ?...答:去掉event.stopPropagation() 之后,由于事件捕获和冒泡时先执行捕获捕获到div之后,事件被阻止,后面就不在继续传播了。所以只输出divcallback....在上面的代码如果增加一个div.addEventListener('click',callbackdiv2,false); 则div先执行捕获,接着执行上面这句冒泡,所以微博里的一个朋友评论说事件执行捕获就不会执行冒泡其实是不对的...捕获 阶段:在事件对象到达事件目标之前,事件对象必须window经过目标的祖先节点传播到事件目标。 这个阶段被我们称之为捕获阶段。在这个阶段注册的事件监听器在事件到达其目标前必须先处理事件。...= true; } } } 可以看我之前写过的一篇文章:如何停止冒泡和阻止默认行为

47620

第9章 JavaScript事件处理

冒泡型事件(Bubbling):DOM树型结构上理解,就是事件由子节点沿父节点一直向上传递直到根节点;浏览器界面视图HTML 元素排列层次上理解就是,事件由具有从属关系的最确定的目标元素一直传递到最不确定的目标元素...', observer); // 移除事件监听器 DOM标准: // 第一个参数是事件名称,第二个参数 observer 是回调处理函数,第三个参数注明该回调处理函数是在事件传递过程中的捕获阶段被调用还是冒泡阶段被调用...,默认true为捕获阶段 element.addEventListener('click', observer, useCapture); // 注册事件监听器(既支持注册冒泡型事件,又支持捕获事件。...returnValue为false即可 取消浏览器的事件传递 取消事件传递是指,停止捕获事件或冒泡型事件的进一步传递。...()即可 function someHandle(event) { event.stopPropagation(); } 因此,跨浏览器的停止事件传递的方法是: function someHandle

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

事件

事件规定事件流包括三个阶段事件捕获阶段,处于目标阶段事件冒泡阶段,首先发生的是事件捕获,为截取事件提供机会,然后是实际目标接收事件,最后是冒泡阶段 ?...//删除事件 /*参数分别是,事件处理属性名称,处理函数,是否捕获执行事件处理函数, 默认是false,即在冒泡阶段执行 */ 应用举例 var btn = document.getElementById...image.png DOM2级事件传播:有3个阶段捕获阶段事件document向子元素一层层传递,直到目标元素 处于目标阶段:此时事件发生在目标元素上,被看做冒泡的一部分 冒泡阶段:和IE冒泡一样...,目标元素向父级元素传递,直到document停止。...: e.stopPropagation(); event.stopPropagation(): 阻止捕获和冒泡阶段中当前事件的进一步传播。

1.3K30

DOM事件基本概念大总结(前端必备)

这一个过程也称为事件冒泡 事件捕获事件冒泡刚好相反,事件最外层的 documet 开始一直往里面,直到点击的元素才停止 <...这一个过程也称为事件捕获 DOM 事件流 在上述两种事件确定的方式下,规定了事件处理的三个阶段事件捕获阶段、处于目标阶段事件冒泡阶段。...同时 DOM明确规定 事件捕获阶段不会处理事件 处于目标阶段属于冒泡阶段的一部分,并且会触发事件。...参数 3 为一个布尔值,false 代表在冒泡阶段执行,true 表示在捕获阶段执行 如下使用匿名函数定义的执行函数无法删除 var doc = document.querySelector(...否则通过html元素直接绑定的方式this指向了 window 对象 eventPhase 和 stopPropagation eventPhase 可以知道事件执行时处于哪个阶段 stopPropagation

1.8K20

Javascript - 事件顺序

事件看起来好像元素2的任何祖先元素都有对应于捕获阶段的onclick事件句柄。 元素1上绑定的doSomething2()事件执行事件传递到目标,没有发现任何一个对应捕获阶段事件句柄。...事件移向冒泡阶段执行在冒泡阶段为元素2注册的doSomething()。 事件又一次向上传递并检查目标的任何祖先元素是否有对应冒泡阶段事件句柄。最后没有发现任何句柄,因此什么也没发生。...事件会查看元素2的任何祖先元素是否存在对于捕获阶段的onclick事件句柄,但没有发现。 事件传递到目标。事件移动到自己的冒泡阶段执行为元素2注册的对应冒泡阶段的doSomething()。...事件再次向上移动并检查目标的任何祖先元素是否有对应冒泡阶段事件句柄。 事件在元素1上发现了事件句柄。于是doSomething2()被执行。...window.event.cancelBubble = true W3C模型中你必须调用stopPropagation()方法。 e.stopPropagation() 这会阻止冒泡阶段事件的传递。

99750

一次关于js事件出发机制反常的解决记录

// useCapture :是否使用捕捉,一般用 false,事件触发时,会将一个 Event 对象传递给事件处理程序。...几个概念 捕获阶段事件对象通过目标的祖先从传播窗口到目标的父。...这个阶段也被称为捕获阶段。 目标阶段:本次活动对象到达事件对象的事件的目标。这个阶段也被称为目标阶段。如果事件类型指示事件不起泡,则在完成此阶段后,事件对象将停止。...冒泡阶段事件对象通过目标的祖先中传播以相反的顺序,开始与目标的父和与所述结束窗口。这个阶段也被称为冒泡阶段。...当需要停止冒泡行为时 function stopBubble(e) { //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation ){

1.4K50

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

DOM事件事件传播的三个阶段是:事件捕获事件冒泡和目标。 事件捕获阶段事件祖先元素往子元素查找(DOM树结构),直到捕获事件目标 target。...在这个过程中,默认情况下,事件相应的监听函数是不会被触发的。 事件目标:当到达目标元素之后,执行目标元素该事件相应的处理函数。如果没有绑定监听函数,那就不执行。...); }, true); 上面的方法中,参数为true,代表事件捕获阶段执行。...代码演示: //参数为true,代表事件在「捕获阶段触发;参数为false或者不写参数,代表事件在「冒泡」阶段触发 box3.addEventListener("click", function...意思是,事件不会往父元素那里传递。 我们检查一个元素是否会冒泡,可以通过事件的以下参数: event.bubbles 如果返回值为true,说明该事件会冒泡;反之则相反。

92820

你根本不懂Javascript(EP5 HTML事件捕获与冒泡)

事件捕捉与冒泡 事件绑定机制 阻止冒泡 参考文献 事件捕捉与冒泡 先捕获的必然是父节点, 然后一层层向下捕获, 然后一层层向上冒泡 这里是一个 td 被点击的效果图 图片 通过三个阶段:...捕捉阶段: 从父节点, 逐渐向目标节点冒泡, 即自上向下 接近目标 elem 阶段(这一阶段会同时激活第一阶段和第三阶段的 handler) 冒泡阶段: 从子节点向父节点冒泡 事件绑定机制 onXXX...放置在捕捉阶段 仅仅对于elem.on(event, selector, handler), 只需要return false可以既阻止默认事件, 又防止冒泡 阻止冒泡 一般不需要阻止冒泡, 因为阻止冒泡之后...,可能影响其他事件捕捉机制 组织冒泡的核心在于这个函数:event.stopPropagation() 阻止冒泡之后, 事件将不会继续传递 下面这一段就不会调用到body的onclick <body...//oEvent.cancelBubble = true; //oEvent.stopPropagation(); //以下两种情况阻止默认行为, 没有停止冒泡 //没有停止冒泡 //oEvent.preventDefault

37040

面试官:什么是js中的事件流以及事件模型?

依次触发其祖先节点的同类型事件,直到DOM根节点 事件捕获 当节点事件被触发时,会DOM根节点开始,依次触发其子孙节点的同类型事件,直到当前节点自身。...后来ECMAScript将两种模型进行了整合,制定了统一的标准:先捕获在冒泡 现在整合后的标准事件流就有了三个阶段事件捕获阶段(目标在捕获阶段不接收事件) 目标阶段事件执行阶段,此阶段会被归入冒泡阶段...) 事件冒泡阶段事件传回Dom根节点) Tips: DOM2级事件规定了在捕获阶段不会涉及到目标阶段事件,但在IE9、Safari、Chrome、Firefox和Opera9.5及更高版本都会在捕获阶段触发目标事件上的事件...参数 描述 event 必须,字符串,指定事件名 function 必须,指定事件触发时要执行的函数 useCapture 可选值,指定事件是否捕获或者冒泡阶段执行;1、true:事件句柄在捕获阶段执行...六、stopPropagation()阻止捕获 stopPropagation() 方法防止调用相同事件的传播。 传播意味着向上冒泡到父元素或向下捕获到子元素。

1.9K10

js addEventListener事件捕获与冒泡,第三个参数详解,阻止事件传播

布尔值,指定事件是否捕获或冒泡阶段执行。...默认false:在冒泡阶段执行指定事件 true:在捕获阶段执行事件 event.stopPropagation():阻止事件传播,用于function(event){}中 图解捕获与冒泡 实例:aa...,再按aa>bb>cc依次冒泡;因为第三个参数(useCapture)为true,所以在捕获阶段执行各自click函数,结果如下: aa bb cc 3....当js修改为 function print(e){ e.stopPropagation();//执行完此函数后,该事件不再继续传播 console.log(this.id);...cc,执行cc的click函数, 因为print函数中有e.stopPropagation(),所以执行完该函数后,click事件不再传播.结果如下: aa 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人

2.6K10

jQuery事件--jQuery基础知识点(2)

本文链接:https://ligang.blog.csdn.net/article/details/41456897 事件在触发后分为两个阶段,一个是捕获(Capture),另一个则是冒泡(Bubbling...)但遗憾的是,大多数浏览器并不支持捕获阶段,jQuery也不支持。...1.所谓的冒泡其实实质就是事件执行中的顺序。防止冒泡的发生:除了使用stopPropagation()方法阻止事件的冒泡过程外,还可以通过语句return false实现停止事件的冒泡过程。 2....遇到执行ready()方法时,通过查看isReady值是否被设置,如果未被设置,那么就说明页面并未加载完成,在此情况下,将未完成的部分用一个数组缓存起来,待ready()方法加载完成后,再将未完成的部分通过缓存一一执行...trigger()方法可以实现触发性事件,即不必用户做任何动作,自动执行该方法中的事件

69321

JavaScript的事件

DOM事件流 “DOM2级事件”规定了事件流包括三个阶段事件捕获阶段,处理目标阶段事件冒泡阶段。首先发生的是事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后是事件冒泡。...事件捕获: document->html->body 处理目标: 事件处理 事件冒泡: div->body->html->document 2) 事件处理程序 事件就是用户或浏览器自身执行的某种动作...addEventListener() 事件绑定 参数: 要绑定的事件名 作为事件处理的函数 布尔值:true在捕获阶段调用事件处理程序;false在冒泡阶段调用 removeEventListener...() 事件删除 参数: 要删除的事件名 作为事件处理的函数 布尔值:true在捕获阶段调用事件处理程序;false在冒泡阶段调用 例如: //事件绑定 var btn = document.getElementById...preventDefault() Function 取消事件的默认行为 stopPropagation() Function 取消事件的进一步捕获或者冒泡 在事件处理程序内部,对象this始终等于currentTarget

1.4K30

事件高级

DOM事件事件流描述的是页面中接收事件的顺序。 事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即 DOM 事件流。... 事件捕获: 网景最早提出,由 DOM 最顶层节点开始,然后逐级向下传播到到最具体的元素接收的过程。  DOM 事件流分为3个阶段:  1. 捕获阶段 2. 当前目标阶段 3....冒泡阶段   我们向水里面扔一块石头,首先它会有一个下降的过程,这个过程就可以理解为最顶层向事件发生的最具体元素(目标点)的捕获过程;之后会产生泡泡,会在最低点( 最具体元素)之后漂浮到水面上,这个过程相当于事件冒泡...事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即 DOM 事件流。 注意   1. JS 代码中只能执行捕获或者冒泡其中的一个阶段。   ... 标准写法:利用事件对象里面的 stopPropagation()方法 e.stopPropagation()  非标准写法:IE 6-8  利用事件对象 cancelBubble 属性

1.2K10

JavaScript小技能:事件

(Node.js 的事件模型、浏览器插件WebExtensions技术的事件模型) 1.3 事件冒泡及捕获 当一个事件发生在具有父元素的元素上时,浏览器运行两个不同的阶段 - 捕获阶段和冒泡阶段。...在现代浏览器中,默认情况下,所有事件处理程序都在冒泡阶段进行注册。 捕获阶段:浏览器检查元素的最外层祖先,是否捕获阶段中注册了一个onclick事件处理程序,如果是,则运行它。...然后,它移动到中单击元素的下一个祖先元素,并执行相同的操作,依此类推,直到到达实际点击的元素。...冒泡阶段:浏览器检查实际点击的元素是否在冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行它。然后它移动到下一个直接的祖先元素,并做同样的事情,直到它到达元素。...通过标准事件对象的 stopPropagation()函数来修复事件冒泡问题 当在事件对象上调用该函数时,它只会让当前事件处理程序运行,但事件不会在冒泡链上进一步扩大,因此将不会有更多事件处理器被运行

1.4K10
领券