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

js事件冒泡

什么是冒泡? DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。...事件捕获*(****event capturing****)*:通俗理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击了子元素,如果父元素通过事件捕获方式注册了对应事件的话...dom标准事件触发先后顺序为:先捕获再冒泡,即当触发dom事件时,会先进行事件捕获,捕获到事件源之后通过事件传播进行事件冒泡。...不同浏览器对此有着不同实现,IE10及以下不支持捕获型事件,所以就少了一个事件捕获阶段,IE11、Chrome 、Firefox、Safari等浏览器则同时存在。...参数 useCapture 是选填,填true或者false,用于描述事件冒泡还是捕获,true表示捕获,默认false表示冒泡

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

js 停止事件冒泡 阻止浏览器默认行为

在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。...否则,我们需要使用IE方式来取消事件冒泡 7 window.event.cancelBubble = true; 8 return false; 2.阻止浏览器默认行为 JavaScript代码...return false; } 但是在使用return false时必须注意: 1、jQuery有自己事件处理层,也对处理程序做了封装,如果事件处理程序返回false,事件冒泡浏览器默认事件都会被阻止...2、使用原生javaScript,在事件处理程序中返回false只会阻止浏览器默认行为,而事件冒泡依然存在。 3、浏览器默认行为和事件冒泡是相互独立。阻止事件冒泡不会影响默认行为,反之亦然。...注意: 有一些浏览器行为是在事件处理程序执行前发生,也就是说这些默认行为是无法取消,如:在大部分浏览器上鼠标移到一个超链接上超链接样式会发生改变,这个动作是发生在focus事件之前,是focus

5.2K120

js事件防止冒泡

事件目标 如今。事件处理程序中变量event保存着事件对象。而event.target属性保存着发生事件目标元素。这个属性是DOM API中规定,可是没有被全部浏览器实现 。...jQuery对这个事件对象进行了必要扩展,从而在不论什么浏览器中都能够使用这个属性。通过.target,能够确定DOM中首先接收到事件元素(即实际被单击元素)。...我们能够不把检查代码放在这里,而是通过改动button行为来达到目标 。 2. 停止事件传播 事件对象还提供了一个.stopPropagation()方法,该方法能够全然阻止事件冒泡。...与.target类似,这种方法也是一种纯JavaScript特性,但在跨浏览器环境中则无法安全地使用 。 只是,仅仅要我们通过jQuery来注冊全部事件处理程序。就能够放心地使用这种方法。 以下。...浏览器会载入一个新页面。这样行为与我们讨论事件处理程序不是同一个概念,它是单击锚元素默认操作。类似地,当用户在编辑完表单后按下回车键时。

2.4K40

JS事件冒泡和捕获

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

2.5K20

JS事件冒泡及阻止

事件冒泡及阻止 当一个元素接收到事件时候,会把他接收到事件传给自己父级,一直到window,当然其传播事件,绑定执行函数并不会传播,如果父级没有绑定事件函数,就算传递了事件,也不会有什么表现...事件冒泡原因是事件源本身可能没有处理事件能力,即处理事件函数并未绑定在该事件源上。它本身并不能处理事件,所以需要将事件传播出去,从而能达到处理该事件执行函数。...实例 当点击id为i3时,浏览器会依次弹出3 2 1,这就是事件冒泡,此正方形处于叶节点上,对其操作事件会向上进行冒泡,直到根节点。 JS事件冒泡及阻止 div{...注意 不是所有的事件都能冒泡。以下事件冒泡:blur、focus、load、unload。 事件解决方案方式在不同浏览器,可能是有所区别的,有些不支持捕获型方案,多数浏览器默认冒泡型方案。

6.5K20

JS事件流、事件冒泡、阻止冒泡事件捕获(一看就懂)

事件冒泡 、阻止冒泡事件捕获 之前先说说什么是事件流,这样会更容易明白 一、事件事件流 1、什么是事件 事件是可以被 JavaScript 侦测到行为。...鼠标点击、鼠标移动、鼠标滚动、按下键盘,浏览器窗口大小改变,网页加载完成,关闭网页等等都会发生事件。 2、什么是事件事件流,描述是页面中接受事件顺序。...一个完整JS事件流是从window开始,最后回到window一个过程。 事件流被分为三个阶段(1~ 5)捕获过程、(5~ 6)事件触发过程、(6~ 10)冒泡过程。...二、事件冒泡 看了上面的那张图应该对事件冒泡有了大概了解了吧。总结来说就是: 当一个元素接收到事件时候 会把他接收到事件传给自己父级,一直到window。...三、阻止冒泡 1、JS阻止事件冒泡 我们用 e.stopPropagation() 这个方法添加到某事件函数里末尾,就可以做到阻止冒泡事件

10.1K53

js 停止事件冒泡 阻止浏览器默认行为(阻止a标签跳转 )

在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。...停止事件冒泡 JavaScript代码 //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation ) //因此它支持W3CstopPropagation(...)方法 e.stopPropagation();  else //否则,我们需要使用IE方式来取消事件冒泡  window.event.cancelBubble = true; return false...; 阻止浏览器默认行为 JavaScript代码           //编辑文章时阻止a标签跳转 $("#final_content").find("a").click...(function(e){ //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.preventDefault

5.8K40

JS事件,你真的懂吗(捕获,冒泡)?

说到js事件大家肯定都知道,那么今天讲一点大家不知道(假设大家不知道?)。 所有的js事件都会分为两个阶段捕获和冒泡。...true表示监听事件捕获阶段,false表示监听事件冒泡阶段。 返回值 没有返回值 示例: <!...然后是inner冒泡阶段 最后是outer冒泡阶段 由此我们可以看到,事件触发时候实际上都是有捕获和冒泡阶段,并且捕获阶段会从最外层父级元素开始捕获,一直捕获到最后触发事件那个元素点才会停止,...并且事件触发是先捕获,在冒泡。 阻止事件冒泡 事件冒泡会让我们实现某些功能时候产生阻碍,那么我们怎么怎么阻止事件冒泡呢,这个时候就会用到一个方法。...这样就成功阻止了事件冒泡,是不是很神奇,那么我们阻止事件冒泡还有别的方法吗,答案是肯定,这时候就得了解一下我们event对象了,我们打印一下event对象,如下: 打印发现当我们触发事件时,

2.2K20

JS里,事件几个细节问题--(冒泡、自定义事件)

今天想实现一个事件自动订阅到指定class元素之上功能。这句话很拗口,稍后解释! 在翻阅了MDN上api说明,多明白了许多细节。...1、event除了具有目标元素,事件类型,时间,位置等有效值 外,还有 bubbles  cancelable 等 与冒泡相关属性。...区别就是:preventDefault:当事件有cancelable=true时,  事件就取消了 stopPropagation :事件停止向DOM上级传播。...(即使当前元素还绑定着其它函数,函数本应该稍后执行情况, 后面的函数都会不执行,好霸气方法)  3、用CustomEvent来实现自定义事件。...再执行dispatchEvent一下语句。 这样就有机会根据上次事件结果,来决定是否终止事件链!

1.4K10

vue.js中实现阻止事件冒泡

当父子元素中都有点击事件时候,为了让触发子元素中事件时,不去触发父元素中事件,可以在子元素事件中添加stop来阻止事件冒泡。....stop 是阻止冒泡行为,不让当前元素事件继续往外触发,如阻止点击div内部事件,触发div事件 .prevent 是阻止事件本身行为,如阻止超链接点击跳转,form表单点击提交 .self 是只有是自己触发自己才会执行...,如果接受到内部冒泡事件传递信号触发,会忽略掉这个信号 .capture 是改变js默认事件机制,默认是冒泡,capture功能是将冒泡改为倾听模式 .once 是将事件设置为只执行一次,如 .click.prevent.once...这个 .passive 修饰符尤其能够提升移动端性能。 阻止click事件冒泡(防止触发另一个事件)方法 使用vue阻止子级元素click事件冒泡。...方法二 可以自己写个阻止冒泡事件 然后在发生冒泡元素中调用这个事件 @click="_stopPropagation($event)" methods:{ _stopPropagation

5.9K10

面试官:哪些浏览器事件不会冒泡

你知道哪些浏览器事件不会冒泡吗?...回答这个问题之前,我们首先要具备DOM事件流捕获与冒泡知识,这里只讲JS中如何设置这两种事件监听,例如对body注册点击事件:document.body.addEventListener('click...在JS中通常利用冒泡来进行事件委托,但并不是所有事件都会冒泡。下面我们看看哪些事件是不能冒泡,又有哪些相关应用场景。...注意:有个类似滚动事件叫滚轮事件wheel是可以触发冒泡( MDN - wheel_event ),我们甚至可以通过额外注册 wheel 监听事件并阻止其冒泡从而让 scroll 事件失效,不过只要滚动条还在...结尾现代JS框架均对事件体系做了相关处理,很多时候开发者可能会忽略事件委托一些机制,了解其中细节与不同事件之间差异,可以有效避免实际开发中出现坑。以上就是文章全部内容,希望对你有所帮助!

1.7K20

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

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

1.2K00

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

写在前面的 这里都是胡说,错了勿怪 开撸代码 首先,当页面渲染好之后,我们页面是一个dom树 ? 浏览器会获取到每一个节点位置和宽度、高度。...好了,从这个时候开始,浏览器就会运行自己事件循环,查看是否有各种事件发生 于是,这个时候,用户点击了一下页面上某一块位置,但是浏览器并不知道用户点 击了哪一个dom,并且也不知道该dom是否有事件响应程序...,浏览器知道只是用户点 击位置x,y坐标,浏览器这个时候就开始从dom树根开始寻找,(这里是捕获 开始),x,y是否在根位置上,根有没有注册点击事件?...然后接着往后找,进行同样 判断,知道找到叶子节点位置(这里是捕获结束)。同样要判断该叶子节点是否注册 了点击事件?是否阻止了事件?然后怎么来,就怎么回去(这里是冒泡开始)。...在回 去过程中,判断每个节点是否注册了点击事件,是否是冒泡注册,如果是冒泡注册 事件,那么就执行,执行过程中如果发生了event.stopPropagation(),那么整个点击事件 就结束了

65320

事件捕获、冒泡、委托

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

1K10
领券