首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js事件冒泡

    事件捕获*(****event capturing****)*:通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击了子元素,如果父元素通过事件捕获方式注册了对应的事件的话...,会先触发父元素绑定的事件。...dom标准事件流的触发的先后顺序为:先捕获再冒泡,即当触发dom事件时,会先进行事件捕获,捕获到事件源之后通过事件传播进行事件冒泡。...不同的浏览器对此有着不同的实现,IE10及以下不支持捕获型事件,所以就少了一个事件捕获阶段,IE11、Chrome 、Firefox、Safari等浏览器则同时存在。...("支持") }); } else if (div1.attachEvent) { div1.attachEvent('onclick', function

    13.5K42

    使用 tabindex 配合 focus-within 巧妙实现父选择器

    事件,才能触发它或者它的父元素的 :focus-within。...CodePen -- tabindex 配合 focus-within 实现div的父选择器 一个小细节,button 的 focus 事件在 Safari 和 firefox 的上冒泡问题 由于 input...在 Chrome 上的表现是正常,而在 Windows 的 Safari、Firefox 上,会触发 button 的 focus 事件,但不会触发父元素的 :focus-within 事件,也就是上面说的...而在 Mac 上,则连 focus 都不会触发。 这一点,在使用的时候务必需要留意。...最后 当然,本文介绍的小技巧,只能算是一个非常简陋,特定条件(点击目标元素改变父元素样式)下的父选择器,真正意义上的父选择器仍需等待未来规范的实现。

    1.3K10

    浏览器中的事件委派、捕获、冒泡

    onclick="alert('form 点击事件触发')"> 这是一个 form 元素 div onclick="alert('div 点击事件触发')"> 这是一个 div...元素 onclick="alert('p 点击事件触发')">这是一个 p 元素 div>以上面的例子来说 (建议在面试时也可以简单快速手写这个例子,可以帮助说明...),当我们在子层 装一个 onclick 的监听器,点下去时,不仅该元素有跑出 alert ,其父层 div> 的 onclick 也被触发,然后父层的父层 的 onclick..., event.currentTarget 的值可能会发生变化例如,如果在一个父元素上添加点击事件监听器,当其子元素被点击时,事件会冒泡到父元素,此时 event.currentTarget 将指向父元素根据具体的需求...阻止冒泡: event.stopPropagation()在实务上,我们有时候不想要冒泡,例如只想要子元素的事件被触发,不想要父层的元素被触发,避免干扰。

    52500

    深入理解 DOM 事件机制

    接下来我们看个事件冒泡的例子: // 例3 div id="outer"> div id="inner">div> div> ...... window.onclick = function...三、事件代理(事件委托) 由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理(delegation)。...2.如何实现 接下来我们来实现上例中父层元素 #list 下的 li 元素的事件委托到它的父层元素上: // 给父层元素绑定事件 document.getElementById('list').addEventListener...我们在例4的inner元素click事件上,添加event.stopPropagation()这句话后,就阻止了父事件的执行,最后只打印了'inner'。...既能阻止事件向父元素冒泡,也能阻止元素同事件类型的其它监听器被触发。

    3.2K50

    5、React组件事件详解

    单击触发react事件 React并不是将click事件绑在该div的真实DOM上,而是在document处监听所有支持的事件,当事件发生并冒泡至document处时,React...( div onClick={this.onReactClick}> 单击事件触发 div> )...console.log("子元素React合成事件绑定事件触发") } render(){ return( div onClick...,则打印出: 子元素原生事件绑定事件触发 父组件原生事件绑定事件触发 在子元素React合成事件onClick中阻止事件传播,则打印出: 子元素原生事件绑定事件触发 父组件原生事件绑定事件触发...子元素React合成事件绑定事件触发 在父元素React合成事件onClick中阻止事件传播,则打印出: 子元素原生事件绑定事件触发 父组件原生事件绑定事件触发 子元素React合成事件绑定事件触发

    4.6K10

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

    引用W3c的解释 HTML事件就是发生在HTML元素上的事情 当在HTML中使用javaScript时,javaScript能够应对这些事件 举例几个常用的事件: onClick (鼠标单击元素...依次触发其祖先节点的同类型事件,直到DOM根节点 事件捕获 当节点事件被触发时,会从DOM根节点开始,依次触发其子孙节点的同类型事件,直到当前节点自身。...、Chrome、Firefox和Opera9.5及更高版本都会在捕获阶段触发目标事件上的事件 五、addEventListener() addEventListener() 方法用于向指定元素添加事件句柄...传播意味着向上冒泡到父元素或向下捕获到子元素。...,若内层子元素有点击事件,则会冒泡到父容器上,这就是事件委托,简单说就是:子元素委托它们的父级代为执行事件。

    2.4K10

    事件高级

    eventTarget.addEventListener()方法将指定的监听器注册到 eventTarget(目标对象)上,当该对象触发指定的事件时,就会执行事件处理函数。...eventTarget.attachEvent()方法将指定的监听器注册到 eventTarget(目标对象) 上,当该对象触发指定的事件时,指定的回调函数就会被执行。...当你单击一个div时,同时你也单击了div的父元素,甚至整个页面。 ​ 那么是先执行父元素的单击事件,还是先执行div的单击事件 ??? 事件流描述的是从页面中接收事件的顺序。...(给父元素注册事件,利用事件冒泡,当子元素的事件触发,会冒泡到父元素,然后去控制相应的子元素。)...以上案例:给ul注册点击事件,然后利用事件对象的target来找到当前点击的li ,因为点击li,事件会冒泡到ul上, ul有注册事件,就会触发事件监听器。

    2K20

    事件高级

    该访法接收两个参数: ●e eventNameWithOn:事件类型字符串,比如onclick、onmouseover, 这里要带on ●callback: 事件处理函数,当目标触发事件时回调函数被调用...当你单击一个div时,同时你也单击了div的父元素,甚至整个页面。 ​ 那么是先执行父元素的单击事件,还是先执行div的单击事件 ??? 事件流描述的是从页面中接收事件的顺序。...div>123div> var div = document.querySelector('div'); div.onclick = function...常情况下terget 和 this是一致的, 但有一种情况不同,那就是在事件冒泡时(父子元素有相同事件,单击子元素,父元素的事件处理函数也会被触发执行), 这时候this指向的是父元素,因为它是绑定事件的元素对象...事件委托的原理 给父元素注册事件,利用事件冒泡,当子元素的事件触发,会冒泡到父元素,然后去控制相应的子元素。 事件委托的作用 我们只操作了一次 DOM ,提高了程序的性能。

    2.1K41

    前端基础-事件对象

    第4章 事件对象 4.1 概述 事件的触发,大部分情况下是用户的一种行为,也就是说,我们并不能确定用户什么时间触发; 而且,由于事件的传播机制,我们甚至不能确定事件具体触发在哪个节点;这是一件很不爽的事情...event.type:返回一个字符串,表示事件类型,大小写敏感; event.timeStamp:返回一个毫秒时间戳,表示事件发生的时间; clientX、clientY :获取鼠标事件触发的坐标 <...); //返回触发节点 console.log(e.target); } 由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点的监听函数定义在父 节点上,由父节点的监听函数统一处理多个子元素的事件...event.stopPropagation(): 方法阻止事件在DOM中继续传播,防止再触发定义在别的节点上的监听函数 div id="div2">2 div...onclick = function(e){ alert('d1'); } a.onclick = function(e){ //阻止事件传播

    63410

    阻止mouseover冒泡行为_onmousedown是什么意思

    onmousemove 事件在鼠标移动到 div 元素上就开始时触发,在这个div上移动一直触发(冒泡)。... onmouseover 事件在鼠标指针进入 div 元素时触发,在子元素上也会触发(p 和 span)(冒泡)。...DOCTYPE html> 其中: 1. onmousemove 事件在鼠标移动到 div 元素上时触发,鼠标在div、p、span元素内移动(即白框内也会触发,事件冒泡到父级div); 2. mouseenter...事件中有在鼠标指针进入 div 元素时触发,鼠标进入p、span元素内不会触发,因为不支持事件冒泡; 3. onmouseover 事件在鼠标指针进入 div 元素时触发,在子元素上也会触发(p 和...事件冒泡 比如说父元素添加了onclick事件,当子元素发生onclick事件时,父元素的onclick事件也会触发。 四.

    1.9K20

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

    ="true">div> 父级元素的同名事件也会被依次触发 元素->父元素->body->html->document->window 事件冒泡一直存在,只不过以前我们没有给父级元素加同名事件 父元素中冒泡(触发) * 说人话:点击一个元素只会触发当前元素的事件,不会触发父元素的同名事件 语法: 事件对象.stopPropagation() IE8及之前不支持...,一级一级往上找父元素触发同名事件,如果有就触发 2.事件捕获:从最顶级的父元素一级一级往下找子元素触发同名事件,直到触发事件的元素为止 事件捕获与事件冒泡触发事件的顺序完全相反 3.事件捕获,只能通过...console.log(e.type); } 事件冒泡好处:如果想给父元素的多个子元素添加事件,我们可以只需要给父元素添加事件即可,然后 通过获取事件源(

    2.1K00

    事件高级

    该方法接收两个参数:  eventNameWithOn:事件类型字符串,比如 onclick 、onmouseover ,这里要带 on  callback: 事件处理函数,当目标触发事件时回调函数被调用...事件冒泡 div class="father"> div class="son">son盒子div> div> // onclick...div>123div> var div = document.querySelector('div'); div.onclick = function...常情况下terget 和 this是一致的, 但有一种情况不同,那就是在事件冒泡时(父子元素有相同事件,单击子元素,父元素的事件处理函数也会被触发执行),  这时候this指向的是父元素,因为它是绑定事件的元素对象...事件委托的原理 给父元素注册事件,利用事件冒泡,当子元素的事件触发,会冒泡到父元素,然后去控制相应的子元素。 事件委托的作用 我们只操作了一次 DOM ,提高了程序的性能。

    1.7K10
    领券