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

JS的事件冒泡捕获

事件机制 ---- 事件触发三个阶段: window往事件触发处传播,遇到注册的捕获事件会触发 传播到事件触发处时触发注册的事件 从事件触发处往window传播,遇到注册的冒泡事件会触发 事件触发一般会按照...|------------------------------------------- 但是有一个特例:如果给body中的子节点同时注册冒泡捕获事件,事件触发会按照注册的顺序执行。...// 以下会先打印冒泡然后是捕获node.addEventListener( 'click', event => { console.log('冒泡') }, false)node.addEventListener...outer上面,而且这两个事件处理函数的useCapture选项为true,说明他们被注册在捕获阶段的。...于是,documentouter的点击处理函数被执行 继续向下寻找,直到到达inner元素本身,捕获阶段就此结束。

2.5K20

js 事件冒泡事件捕获

事件冒泡: 事件冒泡由IE团队提出来的,即事件开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。...IE9,chrome,Firefox,Opera,Safari都支持事件冒泡,并将事件冒泡到window对象。 如下,点击obj3,依次弹出obj3、world、hello。...事件捕获: 事件捕获是由Netscape Communicator团队提出来的,是先由最上一级的节点先接收事件,然后向下传播到具体的节点。...ps:IE8IE8以下的版本不支持addEventListener(),而是采用attachEvent()来实现事件绑定。目前只有IEOpera支持attachEvent()。...IE9支持addEventListener(),同时也兼容IE8的attachEvent()方法,但是IE9IE8对attachEvent()的实现有点不同。

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

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

    说到js事件大家肯定都知道,那么今天讲一点大家不知道的(假设大家不知道?)。 所有的js事件都会分为两个阶段捕获冒泡。...那么问题来了,我们通常看到的事件都是直接触发之后就执行了,那么我们怎么才能看到事件的捕获冒泡都是怎么进行的呢,这里给大家准备了一个例子 addEventListener() 例子之前首先给大家简单介绍一下...然后是inner冒泡阶段 最后是outer冒泡阶段 由此我们可以看到,事件触发的时候实际上都是有捕获冒泡阶段的,并且捕获阶段会从最外层的父级元素开始捕获,一直捕获到最后触发事件的那个元素点才会停止,...并且事件的触发是先捕获,在冒泡。 阻止事件冒泡 事件的冒泡会让我们实现某些功能的时候产生阻碍,那么我们怎么怎么阻止事件的冒泡呢,这个时候就会用到一个方法。...我们会分别给信息的div删除button添加一个冒泡的click事件监听。如果不做阻止传递,点击删除button后,会显示商品详情。显然这不是我们想看到的。

    2.4K20

    JavaScript捕获冒泡探讨

    上个星期在微博中一个关于javascript捕获冒泡代码的讨论,可能没有动手实现一篇的人无法给出确定的答案。 这里再来回顾一下之前的三条微博。...事件的执行顺序 JavaScript冒泡捕获考察题目看图回答问题,晚上公布答案。 问:点击Li,JS的执行顺序是什么? ?...总结就是:先捕获,后冒泡捕获从上到下,冒泡从下到上(形象点说法:捕获像石头沉入海底,冒泡则像气泡冒出水面) 问:假如去掉注释 event.stopPropagation(); 结果又会输出什么?...答:去掉event.stopPropagation() 之后,由于事件有捕获冒泡时先执行捕获捕获到div之后,事件被阻止,后面就不在继续传播了。所以只输出divcallback....以上代码代码:演示 事件不同浏览器处理函数 element.addEventListener(type, listener[, useCapture]); // IE6~8不支持(捕获冒泡通过useCapture

    50120

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

    讲 事件冒泡 、阻止冒泡 事件捕获 之前先说说什么是事件流,这样会更容易明白 一、事件事件流 1、什么是事件 事件是可以被 JavaScript 侦测到的行为。...一个完整的JS事件流是从window开始,最后回到window的一个过程。 事件流被分为三个阶段(1~ 5)捕获过程、(5~ 6)事件触发过程、(6~ 10)冒泡过程。...三、阻止冒泡 1、JS阻止事件冒泡 我们用 e.stopPropagation() 这个方法添加到某事件函数里的末尾,就可以做到阻止冒泡事件。...布尔值,指定事件是否在捕获冒泡阶段执行。 可能值: true - 事件句柄在捕获阶段执行 false - 默认。...,之前的顺序就不一样了。

    14.3K64

    事件冒泡与事件捕获

    javascript 的事件捕获事件冒泡之前一直没能弄明白,知道看到一个例子。...利用丢一颗石头入水的例子,就能够非常形象了,如图所示: 事件捕获事件冒泡就像是一颗石头(点击事件)投入水中: 首先是最外层水面(html)接触(捕获)石头,然后石头下沉,内层的水(body/dom...点击可查看示例 去示例中试一试便清楚了~ 处理事件 理解了事件的捕获冒泡机制,对于事件处理就好办了。...阻止默认事件 event.preventDefault() // 阻止事件默认动作,比如阻止 submit 按钮默认提交 event.stopPropagation() // 阻止捕获 冒泡阶段中事件的进一步传播...,比如是在‘石头’下沉或者‘气泡’冒泡的过程中使之突然消失 事件代理: 从上面事件机制可以看出,如果没有外部干扰,在子节点上触发的事件,在捕获冒泡最终都会经过父节点 因此,我们可以将事件处理函数绑定在父节点上面

    1.7K10

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

    冒泡事件捕获事件 冒泡事件是,进行 捕获事件是从外向内,从大到小 冒泡事件bindtap one <view...测试 点击 区域,事件会从内到外从小到大Console`控制台显示 捕获事件capture-bind:tap <view id="one" class="one" capture-bind:tap="_...测试 点击 three区域,事件会从外到到,从大到小进行传递,Console`控制台显示 非<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 绑定函数依旧会被触发

    1.2K40

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

    事件流、事件捕获事件冒泡的介绍 最近有用到对应的场景,下班了特地来整理下响应的概念,巩固下知识。 我们在点击页面时,事件发生时会在各元素节点按照一定的顺序进行传播,这种传播过程就称作事件流。...事件流分为三个阶段: 1、事件捕获阶段 事件从window发出,不断向子元素寻找对应的目标节点 2、事件目标阶段 事件找到了对应的目标节点,即此时再往下已经没有对应的节点 3、事件冒泡阶段 事件从节点位置网上回溯到文档的根节点...: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.3K00

    事件的捕获冒泡、委托

    其实事件流就是当你点击一个按钮的时候,这个按钮是在HTMLbody上的,自然的,点击按钮的时候相当于点击了HTMLbody,如果按钮放在一个div里面,那么点击按钮的时候相当于点击了div,这样就会出发一系列的事件...事件具有冒泡捕获流,两者刚好是反着来。 JavaScript原声监听事件addEventListener,接收两个参数,一个是方法,一个是布尔值,指定事件是否在捕获冒泡阶段执行。...所以我们可以很直观的打印输出事件的冒泡捕获两个过程。 ? 输出顺序是body 捕获、test 捕获、test 冒泡、body 冒泡。...输出顺序是body 捕获、test onclick 、test 冒泡、test 捕获、body 冒泡,但是事件还是需要遵循外层事件捕获了,目标函数才能执行。...对于事件,在事件捕获或者事件冒泡阶段处理并没有明显的优劣之分,但是由于事件冒泡被所有主流的浏览器兼容,从兼容性角度来说还是建议大家使用事件冒泡模型。这就是事件的捕获冒泡、委托。

    1.1K10

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

    ,事件经过的所有节点都会受到事件的影响,这个传播过程被称为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当中冒泡捕获(bubblecapture)的用法以及目标target

    10.冒泡捕获(bubblecapture)以及目标target 当几个元素重合(必须元素嵌套,像12.2例子那样,元素不嵌套,则同样事件肯定先进入上层元素,因为理论上两个元素没重合,根本就是 两个独立的元素...,这时肯定事件先进入上层元素),事件先捕获(从底层向上层),后冒泡(从上层向底层)。...document.getElementById("zhong");          var nei = document.getElementById("nei");             // 目标(是冒泡还是捕获无所谓...',function(){alert("中冒泡");},false);         // 事件捕获         wai.addEventListener('click',function()...{alert("wai捕获");},true);         zhong.addEventListener('click',function(){alert("中捕获");},true);

    61130

    前端day16-JS(WebApi)学习笔记(事件补充、事件冒泡捕获

    )跟冒泡捕获有关 //如果有同名事件不会覆盖,而是会依次执行 //IE8及以前的版本不支持 btn.addEventListener ( "click", function (...1.事件冒泡:从触发事件元素,一级一级往上找父元素触发同名事件,如果有就触发 2.事件捕获:从最顶级的父元素一级一级往下找子元素触发同名事件,直到触发事件的元素为止 事件捕获与事件冒泡触发事件的顺序完全相反...3.事件捕获,只能通过addEventListener并且参数写true才是事件捕获 其他都是冒泡(不是通过addEventListener添加、addEventListener参数为false) 4....事件对象.stopPropagation() 除了可以阻止冒泡还可以阻止捕获 5.IE8及以前没有捕获!...3.先从最顶级往下一级一级捕获,然后到目标的捕获,目标的冒泡,再一级一级往上冒泡 <input type="button" value="

    1.8K00
    领券