举栗子 事件输出hello world 事件有两种,一种为事件传播,一种是事件冒泡 事件传播和事件冒泡 这还要从遥远的荒诞说起,两家网景和ie,为了能争夺市场,互相使用相反的技术,当网景使用事件传播的时候...,ie使用事件冒泡。...(两个正好相反)这个时候w3c来了,为了能规范规定,直接取折中,当事件发生时,先发生向下传播,当到底了以后再次使用事件冒泡,逐渐的冒泡到顶层window DOM为一个完整的树 使用事件传播输出hello...否则为事件传播 冒泡为上,事件传播为下,事件传播优于事件冒泡 [15.gif] 可以明确的知道,此时为false为冒泡,即全部向上传播,这个比较简单不在阐述 阻止进一步冒泡 // 获取元素 var div1...,为向下,且传播优先于冒泡 并且事件先进行向上传,直到遇到设置为冒泡的元素的时候,停止向上传,开始进行从上到下的捕获,先最外层捕获,然后逐层捕获,直到完成。
DOM事件流 事件传播的三个阶段是:事件捕获、事件冒泡和目标。 事件捕获阶段:事件从祖先元素往子元素查找(DOM树结构),直到捕获到事件目标 target。...事件冒泡阶段:事件从事件目标 target 开始,从子元素往冒泡祖先元素冒泡,直到页面的最上一级标签。...事件冒泡 事件冒泡: 当一个元素上的事件被触发的时候(比如说鼠标点击了一个按钮),同样的事件将会在那个元素的所有祖先元素中被触发。...这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。 通俗来讲,冒泡指的是:子元素的事件被触发时,父元素的同样的事件也会被触发。取消冒泡就是取消这种机制。...说明 onclick 事件是可以冒泡的 } 阻止冒泡 大部分情况下,冒泡都是有益的。当然,如果你想阻止冒泡,也是可以的。可以按下面的方法阻止冒泡。
特性说明和原理图: 标准浏览器和Ie9+浏览器都支持事件的冒泡和捕获,而IE8-浏览器只支持冒泡 标准和Ie9+浏览器用stopPropagation()或cancelBubble阻止事件传播,而ie8...Ie8-用attachEvent为dom元素添加一个事件,但必须在事件名前加上on,此类事件只能在元素的冒泡阶段。...stopPropagatin()方法用于阻止事件的传播,如果设置在捕获阶段,则目标和冒泡阶段不会被执行; cancelBubble属性只能阻止冒泡阶段,对捕获和目标阶段的事件不能阻止 preventDefault...()和window.event.returnValue用于标准浏览器和ie9+,都可以阻止默认事件。...阻止默认事件只用于验证 应用场景 捕获阶段的事件应用场景较少,一般情况下都应用在目标和冒泡阶段。
前言在JavaScript中,事件冒泡和事件捕获是两种不同的事件传播方式。当一个事件被触发时,它会从最内层的元素开始,然后逐级向外传播,直到最外层的元素。...这是因为事件从文档的最外层开始向内传播,然后经过外部div、内部div和按钮,直到它到达按钮。事件冒泡和事件捕获的区别事件冒泡和事件捕获的主要区别在于它们的传播方向。...如何使用事件冒泡和事件捕获在JavaScript中,你可以使用addEventListener()方法来注册事件处理程序,并指定事件传播方式。...该方法接受三个参数:事件类型、事件处理程序和一个可选的布尔值,用于指定事件传播方式。如果该值为true,则事件使用事件捕获传播方式;如果该值为false或未指定,则事件使用事件冒泡传播方式。...这是因为事件从文档的最外层开始向内传播,然后经过外部div、内部div和按钮,直到它到达按钮。结论在JavaScript中,事件冒泡和事件捕获是两种不同的事件传播方式。
事件冒泡: 事件冒泡由IE团队提出来的,即事件开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。...IE9,chrome,Firefox,Opera,Safari都支持事件冒泡,并将事件冒泡到window对象。 如下,点击obj3,依次弹出obj3、world、hello。...event.stopPropagation() 则只阻止事件往上冒泡,不阻止事件本身。...事件捕获: 事件捕获是由Netscape Communicator团队提出来的,是先由最上一级的节点先接收事件,然后向下传播到具体的节点。...ps:IE8和IE8以下的版本不支持addEventListener(),而是采用attachEvent()来实现事件绑定。目前只有IE和Opera支持attachEvent()。
事件流、事件捕获和事件冒泡的介绍 最近有用到对应的场景,下班了特地来整理下响应的概念,巩固下知识。 我们在点击页面时,事件发生时会在各元素节点按照一定的顺序进行传播,这种传播过程就称作事件流。...事件流分为三个阶段: 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(上)。
事件机制 ---- 事件触发三个阶段: window往事件触发处传播,遇到注册的捕获事件会触发 传播到事件触发处时触发注册的事件 从事件触发处往window传播,遇到注册的冒泡事件会触发 事件触发一般会按照...|------------------------------------------- 但是有一个特例:如果给body中的子节点同时注册冒泡和捕获事件,事件触发会按照注册的顺序执行。...和outer上面,而且这两个事件处理函数的useCapture选项为true,说明他们被注册在捕获阶段的。...于是,document和outer的点击处理函数被执行 继续向下寻找,直到到达inner元素本身,捕获阶段就此结束。...此时进入冒泡阶段,inner上的时间处理器得到执行 事件命中元素后开始向上冒泡,一路查找是否注册了冒泡阶段的祖先元素上的时间处理器。由于没有找到因此什么也没发生。
结论 element.addEventListener(event, function[, useCapture]) event:事件名称,如click function:指定要事件触发时执行的函数,可以传入事件参数...布尔值,指定事件是否在捕获或冒泡阶段执行。...默认false:在冒泡阶段执行指定事件 true:在捕获阶段执行事件 event.stopPropagation():阻止事件传播,用于function(event){}中 图解捕获与冒泡 实例:aa...当js修改为 function print(e){ e.stopPropagation();//执行完此函数后,该事件不再继续传播 console.log(this.id);...cc.addEventListener('click',print,true); 再点击cc时,捕获cc,执行cc的click函数, 因为print函数中有e.stopPropagation(),所以执行完该函数后,click事件不再传播
事件一般是用于浏览器和用户操作之间的交互,当用户执行某些特殊的操作时,浏览器给予反应,触发绑定的事件,事件流,事件发生时会在元素节点和根节点之间按照约定的顺序传播,事件经过的所有节点都会受到事件的影响,...这个传播过程被称为DOM事件流 函数事件 事件一般是用于浏览器和用户操作之间的交互,当用户执行某些特殊的操作时,浏览器给予反应,触发绑定的事件 事件流,事件发生时会在元素节点和根节点之间按照约定的顺序传播...,事件经过的所有节点都会受到事件的影响,这个传播过程被称为DOM事件流 true是捕获,false是冒泡,默认为冒泡事件 1.addEventListener()--添加事件监听函数 给元素添加一个事件...3.利用事件的捕获和冒泡做点事情 addEventListener()和removeEventListener()其实拥有三个参数,刚才说过了,第一个表示触发条件,第二个表示触发事件,第三个参数正常情况下可以省略...2.缺点:一个元素只能绑定一个事件处理函数,只会在事件冒泡中运行 DOM2级事件处理程序 该级别的事件处理程序,运用的就是事件捕获和冒泡机制 测试
事件冒泡 ❝当一个子元素的事件被触发的时候(例如onclick事件), 该事件会从事件(被电击的元素) 开始逐个向上传播,触发父级元素的点击事件 ❞ 上图吧 ?...,直到传播到document对象 我自己画了一个事件冒泡的示意图如下 ?...(不理解冒泡的可以去百度下) ❞ ❝定义:利用事件冒泡处理动态元素事件绑定的方法,专业术语叫事件委托。使用事件委托技术可以避免对特定的每个节点添加事件监听器,相反,事件监听器是被添加到它们的父元素上。...事件监听器会分析从子元素冒泡上来的事件,找到是哪个子元素的事件。...❞ ❝事件委托的好处: ❞ ❝事件委托技术可以避免对每个字元素添加事件监听器,减少操作DOM节点的次数,从而减少浏览器的重绘和重排,提高代码的性能。
我们学习javascript的时候,都会接触到事件,我们今天就来说说事件的捕获和冒泡。 事件冒泡阶段:事件开始的时候由事件发生的元素接受,然后逐级向上传播,触摸相对的事件。 代码: 事件捕获阶段:这个跟冒泡事件的顺序则是相反的,是从顶部往下一直传播到具体的事件发生元素,我们把上面的代码小小修改一下。...注意:事件捕获在事件冒泡之前发生 ?
本节以 ChannelRead事件为例,学习 inBound和 outBound事件的传播过程。总体如下图 ?...inBound事件的传播 handler之间的传播信息通过 fireXXX方法:其区别是从哪个节点开始传播。...的传播事件方法,一次从本节点开始往下传播事件。...最后传到尾节点TailContext outBound事件的传播 学习outbound事件的传播,和inbound事件有相似之处。...outBound事件的传播过程。
$numbers = [21,25,100,98,89,77]; 要求 对数字进行排序时,需要使用冒泡排序算法。...用PHP实现该算法 2、伪代码说明 冒泡排序通过一次比较两个值来工作,并且成对配对。并且迭代直到所有元素都到位才结束。每次迭代后,至少有一个元素移到列表的末尾。下面是第一次迭代的说明: ?...描述冒泡排序的伪代码如下: FOR each element of the list FOR each element of the list IF current element...3、PHP实现冒泡排序 要在PHP中实现冒泡排序,我们只需要两层循环。请注意,两层循环的终止是:列表的长度-1。这是为了防止访问未索引的元素。 <?
//阻止冒泡的兼容性写法 function stopBubble(event){ var e=arguments.callee.caller.arguments[0]||event; if
JavaScript冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件的进一步传播。...防止冒泡和捕获 w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true stopPropagation也是事件对象(Event)的一个方法,用是阻止目标元素的冒泡事件...什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次在它的父级元素中被触发 。 stopPropagation就是阻止目标元素的事件冒泡到父级元素。...("li");'>test 上面的代码,Demo如下,我们单击test时,会依次触发alert(“li”),alert(“ul”),alert(“div”),这就是事件冒泡...的stopPropagation()方法 e.stopPropagation(); else //否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble
//得到事件 function getEvent(){ if(window.event) {return window.event;} func=getEvent.caller...return arg0; } } func=func.caller; } return null; } //阻止冒泡...getEvent(); if(window.event){ //e.returnValue=false;//阻止自身行为 e.cancelBubble=true;//阻止冒泡...}else if(e.preventDefault){ //e.preventDefault();//阻止自身行为 e.stopPropagation();//阻止冒泡
这篇文章介绍 Akka 层次结构,以及基于层次结构的容错机制。 1. Akka 的层次结构 我们需要实现一个翻译模块,其功能是输入中文输出多国语言。...我们可以让一个 Master Actor 负责接收外界输入,多个 Worker Actor 负责将输入翻译成特定语言,Master Actor 和 Worker Actor 之间是上下级层次关系。...上面的 Actors 层次结构是我们程序里 Actor 的层次结构。这个层次结构是 Actor System 层次结构的一部分。...Actor System 层次结构从根节点出来有两个子节点:UserGuardian 和 SystemGuardian。...Akka 系列系列文章 Akka 使用系列之一: 快速入门 Akka 使用系列之二: 测试 Akka 使用系列之三: 层次结构和容错机制 Akka 使用系列之四: Future
今天学院君要给大家介绍的是基于选择的排序算法,常见基于选择的排序算法有冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选择排序算法的时候,通常会根据以下几个维度来考虑: 时间复杂度 空间复杂度...实现原理 冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足就让它俩互换。...:https://visualgo.net/zh/sorting,经过 n 次冒泡,最终完成排序(所谓冒泡,以升序来看,就是每次把待排序序列中的最大值插到已排序序列的最前面,这个过程就像冒泡一样):...冒泡排序图示 示例代码 重要的是理解冒泡排序的原理,懂了原理就是把这个排序过程翻译成代码而已,以下是 Go 代码实现的冒泡排序: package main import "fmt" func bubbleSort...性能分析 最后我们来看下冒泡排序的性能和稳定性: 时间复杂度:O(n2) 空间复杂度:只涉及相邻元素的交换,是原地排序算法 算法稳定性:元素相等不会交换,是稳定的排序算法 时间复杂度是 O(n2),看起来性能并不是很好
/javascript" src="jquery-1.10.1.min.js"> $(function() { //“冒泡事件...:微软提出的 事件由子元素传递到父元素的过程,叫做冒泡” //但是在实际项目开发中,我们可能并不需要元素的默认行为,所以就可以通过以下方式进行禁止。...$(".son").click(function(event) { // return false;//不仅阻止了事件往上冒泡,而且阻止了事件本身。...event.stopPropagation();//则只阻止事件往上冒泡,不阻止事件本身。...}); //“冒泡事件:微软提出的 事件由子元素传递到父元素的过程,叫做冒泡” //但是在实际项目开发中,我们可能并不需要元素的默认行为,所以就可以通过以下方式进行禁止。
前言 事件冒泡,可能有些同学还不是很清楚,什么是事件冒泡?来看个简单例子。...,阻止了事件冒泡,但不会阻击默认行为(它就执行了超链接的跳转) return false 事件处理过程中,阻止了事件冒泡,也阻止了默认行为(比如刚才它就没有执行超链接的跳转) event.preventDefault...() 事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转) Vue解决事件冒泡 Vue.js为v-on提供了 事件修饰符,我们只需要添加click.stop即可防止事件冒泡...小程序解决事件冒泡 bind事件绑定不会阻止冒泡事件向上冒泡,...catch事件绑定可以阻止冒泡事件向上冒泡。
领取专属 10元无门槛券
手把手带您无忧上云