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

DOM事件的传播机制

引言--DOM事件的传播机制是指当一个事件在DOM树中触发时,它是如何在各个元素之间传播的。DOM事件传播机制分为三个阶段:捕获阶段、目标阶段和冒泡阶段。...此外,还有一种常用的技术称为事件委托,它能够简化事件处理程序的绑定和管理。本文将详细介绍这些概念,并提供相应的代码示例。事件与事件流在介绍事件传播机制之前,我们先来了解一下什么是事件和事件流。...在DOM中,事件是指用户与页面交互时发生的动作,比如点击、鼠标移动等。而事件流则是指这些事件在DOM树中传播的路径。...标准 DOM 事件流DOM事件流是指在DOM树中,事件从最外层的节点开始传播,逐级向下,直到达到目标节点,然后再从目标节点向上传播到最外层的节点。...总结起来,DOM事件流就是指从最外层的节点开始传播,逐级向下到达目标节点,然后再从目标节点向上传播到最外层的节点的过程。这个过程分为捕获阶段、目标阶段和冒泡阶段。

19830

事件冒泡和传播

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

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

    Event(事件)的传播与冒泡

    特性说明和原理图: 标准浏览器和Ie9+浏览器都支持事件的冒泡和捕获,而IE8-浏览器只支持冒泡 标准和Ie9+浏览器用stopPropagation()或cancelBubble阻止事件传播,而ie8...Ie8-用attachEvent为dom元素添加一个事件,但必须在事件名前加上on,此类事件只能在元素的冒泡阶段。...stopPropagatin()方法用于阻止事件的传播,如果设置在捕获阶段,则目标和冒泡阶段不会被执行; cancelBubble属性只能阻止冒泡阶段,对捕获和目标阶段的事件不能阻止 preventDefault...流的Demo 在cont的捕获事件处有阻止事件传播的代码 阻止默认事件只用于验证 应用场景 捕获阶段的事件应用场景较少,一般情况下都应用在目标和冒泡阶段。...现阶段w3c的标准事件已普遍受支持,如果不兼容ie8-浏览器可以废弃一些兼容性代码。

    1.1K90

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

    DOM事件流 事件传播的三个阶段是:事件捕获、事件冒泡和目标。 事件捕获阶段:事件从祖先元素往子元素查找(DOM树结构),直到捕获到事件目标 target。...在这个过程中,默认情况下,事件相应的监听函数是不会被触发的。 事件目标:当到达目标元素之后,执行目标元素该事件相应的处理函数。如果没有绑定监听函数,那就不执行。...事件冒泡 事件冒泡: 当一个元素上的事件被触发的时候(比如说鼠标点击了一个按钮),同样的事件将会在那个元素的所有祖先元素中被触发。...这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。 通俗来讲,冒泡指的是:子元素的事件被触发时,父元素的同样的事件也会被触发。取消冒泡就是取消这种机制。...说明 onclick 事件是可以冒泡的 } 阻止冒泡 大部分情况下,冒泡都是有益的。当然,如果你想阻止冒泡,也是可以的。可以按下面的方法阻止冒泡。

    98720

    深入理解JavaScript中的事件传播机制:事件冒泡和事件捕获

    前言在JavaScript中,事件冒泡和事件捕获是两种不同的事件传播方式。当一个事件被触发时,它会从最内层的元素开始,然后逐级向外传播,直到最外层的元素。...这是因为事件从按钮开始向外传播,然后经过内部div和外部div,直到它到达文档的最外层。事件捕获事件捕获是指当一个事件被触发时,它会从最外层的元素开始,然后逐级向内传播,直到最内层的元素。...这是因为事件从文档的最外层开始向内传播,然后经过外部div、内部div和按钮,直到它到达按钮。事件冒泡和事件捕获的区别事件冒泡和事件捕获的主要区别在于它们的传播方向。...事件冒泡从最内层的元素开始向外传播,而事件捕获从最外层的元素开始向内传播。这意味着当你单击一个按钮时,事件冒泡会先触发按钮的事件,然后是它的父元素的事件,以此类推,直到它到达文档的最外层。...事件冒泡从最内层的元素开始向外传播,而事件捕获从最外层的元素开始向内传播。你可以使用addEventListener()方法来注册事件处理程序,并指定事件传播方式。

    2.1K21

    借助 Pod 删除事件的传播实现 Pod 摘流

    摘流方案 从表面上看,我们可以将上面那些事件序列串联起来,禁止他们并行进行,直到从所有相关子系统注销了要删除的 Pod 之后,再开始 Pod 的关闭序列。...但是,由于 Kuberenetes 系统的分布式性质,在实践中很难做到这一点。如果节点之一遇到网络阻隔会怎样?是否要无限期地等待事件传播?如果该节点重新恢复联机怎么办?...这将会发送一个Pod deletion 事件,该事件会同时通知给 kubelet 和 Endpoint Controller(端点控制器,这里指的是 Pod 上层的 Service控制器)。...驱逐节点上的Pod,会发送一个Pod Deletion事件 在 preStop 钩子执行时,首先会延迟5秒执行第二条关闭Nginx的命令。...在本系列的下一也是最后一部分,我们将介绍如何使用它来控制同时发生的节点驱逐事件的数量。 推荐阅读 如何优雅地关闭Kubernetes集群中的Pod Deployment应用详解

    1.3K20

    freeswitch: ESL中如何自定义事件及自定义事件的监听

    ,但是有时候我们想根据业务需求,新增一些自定义的事件,比如:客人进线后,如果分配到了一个空闲的客服,希望触发一个特定的事件。...,相当于每次进线,都触发一个自定义事件,然后调用echo,让主叫方听到自己的声音。...这里有几个要注意的地方: 1. 系统自带的默认通道变量,比如Caller-ANI,在自定义事件中并不能通过赋值的方式篡改。...每一次自定义事件的触发,设置的业务变量(比如:上面的MY-VAR-1),只在本次事件中有效,并不象freeswitch自带的变量,可以一直传递到后面的事件中。 3....如果需要添加自定义变量,且一直能向下传递到所有事件中,可以用export导出变量 exe.export("MY-VAR-2", "something", true); 而且用export导出的变量,在取值时

    3.4K31

    Vue组件的自定义事件

    一种组件间通信的方式,适用于子组件==>父组件 01 - 基本使用 click,keyup,mouseover等都属于原生js事件,自定义事件指事件名称为自定义。 给谁绑的事件找谁触发。...通过在父组件中给子组件绑定自定义事件实现(事件的回调在父组件中):子组件给父组件传递数据,不再需要父组件给子组件传递函数类型的props。...$on('addTodo', this.addTodo) } 想让自定义事件只出现一次,可以使用once修饰符或者$once方法 子组件: //触发组件实例上的自定义事件,todo为要传递的数据 this...$emit('addTodo', todo) 03 - 解绑组件自定义事件 给谁绑的事件找谁解绑。 解绑单个自定义事件:this....,该组件身上的所有自定义事件也被销毁 04 - 注意点 1.谁触发的组件自定义事件,该事件回调函数当中的this就是谁 2.组件实例想用原生DOM事件需要加事件修饰符.native(原生的,本来的) 3

    1.7K20

    jQuery 事件(三) 事件的绑定和解绑、对象的使用、自定义事件

    可以自定义事件名 多个事件绑定同一个函数 // 通过空格分离,传递不同的事件名,可以同时绑定多个事件 $("#elem").on("mouseover mouseout",function(){ })...比如this和(this)的使用、event.target和(event.target)的使用; 自定义事件 trigger事件 类似于mousedown、click、keydown等等这类型的事件都是浏览器提供的...方法就可以调用到alert .trigger定义 根据绑定到匹配元素的给定的事件类型执行所有的处理程序和行为 trigger除了能够触发浏览器事件,同时还支持自定义事件,并且自定义时间还支持传递参数 $...',['参数1','参数2']) trigger触发浏览器事件与自定义事件的区别 自定义事件对象,是jQuery模拟原生实现的 自定义事件可以传递参数 triggerHandler事件 trigger事件还有一个特性...:会在DOM树上冒泡,所以如果要阻止冒泡就需要在事件处理程序中返回false或调用事件对象中的.stopPropagation() 方法可以使事件停止冒泡 trigger事件是具有触发原生与自定义能力的

    4.1K30

    自定义事件 原

    事件是一种叫做观察者的设计模式,这是一种创建松散耦合的技术。观察者模式由两类对象组成:主体和观察者。主体负责发布事件。同时观察者通过订阅这些事件来观察该主体。...观察者知道主体并能注册事件的回调函数(事件处理程序),涉及到Dom上时,Dom元素便是主体,你的事件处理代码便是观察者。...事件是与Dom交互的最常见的方式,但它们也可以用于非Dom代码中--通过实现自定义事件。 自定义事件背后的概念是创建一个管理事件的对象。让其他对象监听那些事件。...handlers.splice(i, 1); } console.log(handlers); } } 然后使用EventTarget类型的自定义事件...因为这种功能是封装在一种自定义类型中的,其它对象可以继承EventTarget并获得这个行为 function Person(name) { this.name = name;

    50030

    自定义广播事件

    :比如车载电脑,里面有很多应用,有些应用需要发射信号给某一个广播接收者 新建一个广播接收者,清单文件中进行配置,监听的动作,这个动作名称就是我们自定义广播要发射的动作...新建一个应用,来发射信号 获取Intent对象,通过new出来 调用Intent对象的setAction()方法,设置发射的信号,参数:上面接收者所监听的动作 调用sendBroadcast(intent...)方法,发送广播,参数:Intent对象 还有一个api叫sendOrderedBroadcast(intent,receiverPermission),发送一条有序的广播事件,上面的是发送一条无序的广播事件...,无序的广播会被所有的广播接收者收到,有序的广播会按照优先级接收意图过滤器的属性android:prority=”1000”,参数:Intent对象,所需权限 并且高优先级的可以终止掉广播事件abortBroadcast...() 还有一个重载函数,里面有个参数,设置finalReceiver,保证这个接收者能接收到,不受终止事件的影响

    71930

    自定义路由事件

    了解了路由事件后,这节来学习一下如何自定义路由事件。...第二个参数是指路由事件的策略,也就是事件传播的形式,有如下三种枚举: RoutingStrategy.Tunnel:隧道式,是指事件从最外层的控件开始路由,直到路由到控件自己,就像一条自上往下的隧道,从...window控件一路通到当前触发事件的控件; RoutingStrategy.Bubble:冒泡式,这个跟隧道式相反,它是从触发事件的控件向上传播,直到最上层停止; RoutingStrategy.Direct...第四段是激发Click路由事件的方法,事件参数就是在此方法中处理,它是路由事件传播之源。...) 因为RoutedEventHandler的参数跟我自定义的事件参数不一致,需要使用EventHandler的泛型版指定我的事件参数类型,下面是RoutedEventHandler的声明: 该参数类型是

    56420

    自定义图例事件

    主要思路 增加无数据的 series[i] ,产生额外的图例图标 监听「legendselectchanged」事件,更新图表数据源,实现所需图形的显示 / 隐藏 具体实现 准备原始数据、准备过滤原始数据的函数...hasColumnName:二维数据是否有标题行 filterCondition:过滤条件,可以传入结果为布尔值的字符串表达式,或者入参为 source[i] ,返回布尔值的函数 配置项(自定义图例及对应的...[] } ]); return res; })() }; (function(){ return xxx })():这种写法会直接把函数的返回值计算出来并返回...,不会得到一个函数对象 在图例和系列中,增加自定义的「Matcha Latte/Milk Tea」和「Cheese Cocoa/Walnut Brownie」 监听「legendselectchanged...」事件 myChart.on('legendselectchanged', function(params) { var datasetSourceNew; //alert(JSON.stringify

    44730

    Vue3中的事件处理:事件绑定、事件修饰符、自定义事件

    本文将详细介绍Vue3中的事件处理,包括事件绑定、事件修饰符、自定义事件等方面。事件绑定在Vue3中,我们可以使用v-on指令或简写形式的@来进行事件绑定。...下面是一些常用的事件修饰符:.stop:阻止事件冒泡,即停止事件在父元素中的传播。.prevent:阻止事件的默认行为,如提交表单或点击链接后的页面跳转。....自定义事件在开发中,有时我们需要自定义事件来实现组件间的通信或特定的功能。Vue3提供了自定义事件的机制,使得我们可以在组件中触发和监听自定义事件。...在父组件中,我们可以使用v-on指令或简写形式的@来监听自定义事件,并执行相应的处理函数。...自定义事件,并在事件处理函数中输出了相应的信息。

    4.9K21

    代码触发,手动触发touchstart事件,touch事件,click事件,自定义事件

    大家好,又见面了,我是你们的朋友全栈君。...工作中有时候会用到需要用代码去手动触发某个事件或者是自定义事件,通常触发click事件的做法为eleme.click(),遇到touchstart就行不通了。...可以使用以下方式 // 创建事件. var event = document.createEvent('Events'); // 初始化一个点击事件,可以冒泡,无法被取消 event.initEvent...e.target 就是监听事件目标元素 }, false); // 触发事件监听 elem.dispatchEvent(event); initEvent已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它...elem.addEventListener('touchstart', function (e) { ... }, false); // 触发event. elem.dispatchEvent(event); Event构造函数也可以使用自定义事件

    4.9K30
    领券