Javascript——冒泡排序和阻止事件冒泡

事件冒泡排序VI labVIEW 基于冒泡排序VI 调用事件结构实现数组数据从大到小或者从小到大进行排序 立即下载

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流。

JS代码中只能执行捕获或者冒泡其中的一个阶段
onclick和attachEvent只能得到冒泡阶段
addEventListener(type,listener[, useCapture])第三个参数如果是true,表示在事件捕获阶段调用事件处理程序;如果是false(不写默认就是false),表示在事件冒泡阶段调用事件处理程序。

DOM事件流三个阶段

  1. JS代码中只能执行捕获或者冒泡其中的一个阶段
  2. onclick和attachEvent(ie)只能得到冒泡阶段
  3. 捕获阶段,如果addEventListener第三个参数是true,那么处于捕获阶段:document->html->body->father->son
<script>
        var son = document.querySelector('.son');
        son.addEventListener('click',function(){
            alert('son');
        },true);
        var father = document.querySelector('.father');
        father.addEventListener('click',function(){
            alert('father');
        },true);
</script>
  1. 冒泡阶段:如果addEventListener第三个参数是false或省略,则处于冒泡阶段:son->father->body->html->document
<script>
        var son = document.querySelector('.son');
        son.addEventListener('click',function(){
            alert('son');
        },false);
        var father = document.querySelector('.father');
        father.addEventListener('click',function(){
            alert('father');
        },false);
        document.addEventListener('click',function(){
			alert('document');
		})
</script>

有些事件是没有冒泡的,比如onblur, onfocus, onmouseenter, onmouseleave

阻止事件冒泡的两种方式:
事件冒泡:开始时由最具体的元素接受,然后逐级向上传播到DOM最顶层节点
事件冒泡本身的特性会带来坏处,也会带来好处。

<script>
    if(e&&e.stopPropagation){
        e.stopPropagation();
    }else{
        window.event.cancelBubble=true;
    }
</script>

事件委托(代理/委派):在jQuery里称为事件委派。
原理:给父节点添加侦听器,利用事件冒泡影响每一个子节点。不是每个子节点单独设置事件监听器,而是事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个子节点。

例:给ul注册点击事件,然后利用事件对象的target来找到当前点击的li,因为点击li,事件会冒泡到ul,ul有注册事件,就会触发事件监听器。

作用:只需要操作一次DOM,提高了程序的性能。

<script>
    var ul = document.querySelector('ul');
    ul.addEventListener('click',function(e){
        e.target.style.backgroundColor = 'pink';
    })
</script>
Arcgis中的模型构建器技术之按属性批量建库并对应输出 好久没更新了,之前我们已经介绍过四至点提取模型,前两天有同事问怎么样按属性批量建数据库并对应输出相关图斑。比如将一个县的永农数据按乡镇建立数据库并将对应乡镇的永农数据输出到相应的数据库里。今天就介绍一下相关的模型构建过程。 阅读详情

相关推荐

Autosar结合simulink的汽车应用层软件开发实例

本文基于汽车应用开发案例,并结合Autosar相关知识,生成具有Autosar标准的汽车应用层开发代码,以供学习和参考。以上就是本篇内容,主要是利用Simulink创建Autosar接口并进行端口映射的方法。

m0_64899535的博客 2152

什么是冒泡,怎么阻止冒泡,冒泡排序

冒泡:在一个对象上触发某个事件,如果定义了这个事件,就调用处理,没定义或返回true,这个事件就会向父级传播,直到被处理为止 举个栗子 <div @click="this.alert('我是外层')"> <div @click="this.alert('我是内层')">点我</div> </div> 依次输出 '我是内层','我是外层',从内层冒泡到外层 怎么阻止冒泡 js event.stopPropagation(); //事件里加这一句 vue @

hu104160112的博客 909

别再为调试发愁!STM32CubeMX+FreeRTOS下,串口printf打印的保姆级配置指南(基于STM32F429)

本文详细介绍了在STM32CubeMX和FreeRTOS环境下实现稳定串口printf打印的配置方法。通过硬件选型、基础配置、线程安全的重定向实现以及高级调试技巧,帮助开发者解决多任务环境下的串口输出问题,提升调试效率。特别适用于STM32F429开发板用户。

weixin_42527401的博客 273

js 阻止冒泡排序

window.event.stopPropagation();  这个用法是阻止冒泡排序

青衫-优快云博客 1137

Halcon深度学习实战:基于异常值检测的工业缺陷精准识别方案

本文详细介绍了Halcon深度学习中的异常值检测技术在工业缺陷识别中的应用。该方法仅需少量正常样本即可训练,能有效应对未知、多变的缺陷类型,显著降低项目启动门槛。文章提供了从数据准备、模型训练、参数调优到产线部署的完整实战指南,并分享了关键的性能优化与避坑经验。

weixin_29042035的博客 243

高效利用ChEMBL数据库:从靶点查询到活性数据处理的完整指南

本文提供了高效利用ChEMBL数据库的完整指南,从靶点查询到活性数据处理。详细介绍了靶点精准定位、高级过滤技巧、数据导出优化以及活性数据清洗、特征工程和可视化等实战技巧,帮助药物研发人员快速获取和处理生物活性数据,提升工作效率。

weixin_29278805的博客 797

js 中的对象属性顺序问题

js 的对象属性可能是按照某种顺序排序的? 1.对象属性先按数字型的排序,再是非数字型的属性。 let a = { b: "1", 1: "nn",2:"mm",a:"2", 测试: "test" }; // 输出 {1: "nn", 2:"mm", b: "1", a:"2",测试: "test"} let b = { 测试: "test", 1: "nn", b: "1" }; // 输出 {1: "nn", 测试: "test", b: "1"} 2.如果属性中既存在数字型的属性,又存在对应字符型

kjs--的博客 2695

[图解]SysML与EA实战:住宅安全系统接口块设计全解析

本文详细解析了使用SysML和EA工具进行住宅安全系统接口块设计的全流程。从系统上下文图入门到接口块实战技巧,涵盖块定义图与内部块图的视角转换,以及多图协同建模方法论。特别分享EA工具的高效操作指南和常见问题避坑建议,帮助工程师掌握精确信号定义、端口方向设置等关键技能,提升安防系统设计效率。

weixin_29234509的博客 333

javascript中的对象为什么会按照键来自动排序

原因: javascript中的对象按照键来自动排序是浏览器造成的,经查V8的相关文档得出以下结论:Chrome浏览器下创建的js对象数组会自动按照键排序、而FireFox不会。 例如: 解决方法: 必须将对象的键值转换为字符,就意味着如果键值必须要是数字型,那么需要在数字前面加上字符(如加_符号或者字母)就会转换为字符变量,这样就不会自动排序如: ...

棠樾的博客 2800

Vue3 - 解决报错 Uncaught (in promise) DOMException: Failed to execute ‘insertBefore‘ on ‘Node‘: The node

vue3,报错,vue3报错,Uncaught(inpromise)DOMException:Failedtoexecute'insertBefore'on'Node':Thenodebeforewhichthenewnodeistobeinsertedisnotachildofthisnode,如何解决这个错误,动态渲染,v-if,v-show,insertBefore,详细解决方法,vue3未能在“Node”上执行“insertBefore”:要插入

🏆 前端领域优质创作者 1万+

ESP32与INMP441麦克风模块实现音频传输

ESP32是一款低成本、低功耗的物联网开发板,支持Wi-Fi和蓝牙双模通信,内置双核处理器,适合音频处理和实时数据传输。INMP441是一款高性能数字麦克风模块,支持I2S接口,可提供高精度音频数据采集(24-bit分辨率,64-100 dB SNR)。

走向CTO的路上... 2040

jQuery取消冒泡排序事件

3.html $(function(){ $("#sid").click(function(){ alert('我是大DIV'); }); $("#bid").click(function(event){ alert('我是小DIV'); event=event||window.event; if (event.stopPropagation) { event.sto

聪明的小明的博客 1083

DataCastle-租金预测

ID:编号;时间:房屋信息采集的时间;小区名:房屋所在小区,已脱敏处理;小区房屋出租数量:小区出租房屋数量,已脱敏处理;楼层:0、1、2分别表示楼层低,中,高;总层数:房屋所在建筑的总楼层数,已脱敏处理;房屋面积:房屋面积数值,已脱敏处理;房屋朝向:房屋的朝向;居住状态:房屋的居住状态,表示是否已出租或居住中,已脱敏处理;卧室数量:户型信息,数字表示卧室的个数;卫的数量:户型信息,数字表示卫生间的个数;厅的数量:户型信息,数字表示厅的个数;

优快云 精品推荐 3457

JavaScript冒泡排序

- 所谓冒泡指的就是事件的向上传导,当后代元素上的事件被触发时,其祖先元素的相同事件也会被触发 - 在开发中大部分情况冒泡都是有用的,如果不希望冒泡发生可以通过事件对象取消冒泡 event.cancelBubble=true 首先创建一个函数专门用作冒泡排序使用,函数接收一个叁数,也就是我们的数组 现在我们需要创建一个变量作为临时储存数据的地方,因为我们等下需要进行变量的对调,还要需要遍历,因此我们需要创建一个for循环,因为它们需...

weixin_49756833的博客 195

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

常见的一些面试题(四)

1.找出数组中最大的值,arr = [7,4,8,1,5] console.log(Math.max(7,4,8,1,5)); console.log(Math.max.apply(1,arr)); 2.封装一个函数,生成n位的随机验证码 functionrandomCode(num){ varstr='0-9a-zA-Z'; vararr=''; for(vari=0;i<num;...

qq_48294048的博客 203

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JavaScript面试题

闭包允许你从内部函数中访问外部函数作用域,每当一个函数被创建,都会将创建它的环境(作用域)中的对象(包括变量和函数等)包含进去,就形成了闭包。闭包常见的创建方式是在一个函数内部创建另一个函数。允许内部函数访问外部函数的参数和变量;外部函数执行完毕后,其变量对象仍然存在,因为闭包保留了这个对象。保护变量安全:闭包的变量不会被全局访问,形成一个独立的“私有”变量;创建可复用的函数:闭包可以创建具有状态的函数,每次调用时都会记住上次调用的状态;

W_Ruier的博客 531

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

浅析JavaScript事件流——冒泡

一、什么是事件冒泡流 我们知道事件流指的是从页面中接受事件的顺序。 为了形象理解事件冒泡,可以想象三军主将诸葛亮,在帐内运筹帷幄,眼观六路耳听八方,这时候前方的战事情况就需要靠传令兵来传达,当第一位传令兵接到士官战事信息,打出旗语,百米之外的第二个传令兵看到后打出同样的旗语,第三个,第四个....,直到信息传到诸葛亮手中。用专业术语解释就是:当一个元素上的事件被触发的时候,比如说鼠标点击了一个...

weixin_34124939的博客 100

JS阻止事件冒泡

如下测试代码: #div{border: 1px solid red;width: 500px;} #p1,#p2{border: 1px solid red;} 我是外层DIV 我是P1 阻止事件冒泡 我是P2 未阻止事件冒泡 JS阻止事件冒泡代码: function clickDiv(){ alert("我是外层DIV"); } function cl

itmyhome的专栏 9915

js 面试题

​ pop() 删除数组的最后一个元素并返回删除的元素。​ reverse() 反转数组 ​ shift() 删除第一元素 并返回删除的元素 ,原数组会改变 ​ slice(1,2) 数组截取 参数1 开始位置 参数2结束位置 但不包含结束下标元素 ​ sort 排序。a++){ ​ if(arr[i]>arr[a]){ ​ [arr[i],arr[a]]=[arr[a],arr[i]] ​ } ​ } } console.log(arr)(注意a=i+1 不是a=a+1,使用了解构赋值的写法)...

weixin_68166404的博客 525

JavaScript的基础知识(一)

1、js中 === 与 == 的区别 两个等号 == : 判断的是两个数据的值是否相同 三个等号 === : 判断的是两个数据的值与类型是否都相同 返回值 : 都是布尔值 2、 NaN是什么? NaN等于NaN吗? NaN 是JavaScript中一个十分特殊的存在, 可以说他是Number类型 但是他又不属于一个 " 数字 "。 NaN 产生的条件: 当两个数据进行运算的时候,结果不是可...

tf971002的博客 217

面试题目总结

面试总结

m0_47147387的博客 285

JavaScript一些常见知识点

1、=== 和 == 的区别? 简单来说 === 是严格等, ==是相等 == 比较两个运算数的数值看是否相等 === 比较两个运算数的数值及 数据类型 看是否相等 比较原则: 值类型之间的比较:只有数据类型相同,且数值相等时才能够相同 值类型与引用类型比较:肯定不相同 引用类型间比较:比较他们的引用值(内存地址) 2、NaN 是什么 NaN == NaN ? NaN:not a number /...

mingyuelcx的博客 174

js、jq常用代码,持续更新中

 1、返回 一个随机数 function randombetween(min, max){ return min + (Math.random() * (max-min)); }   2、冒泡排序 用于对数组进行排序,根据数值以递增顺序进行排序。 function bubbleSort(theArray) { var i, j; for (i = theArray.len...

cc1314_工作、学习有感 327

常用js方法的封装

原来来自:这里写链接内容

十年之约 2464

JS事件冒泡和事件代理(委托)

事件冒泡 什么是事件冒泡? 当一个元素接收到事件的时候,会把他接收到的事件传给父级,一直传到window (注意这里传递的仅仅是事件 并不传递所绑定的事件函数。所以如果父级没有绑定事件函数,就算传递了事件 也不会有什么表现 但事件确实传递了。) <!DOCTYPE html> <html lang="en"> <head> <meta charse...

菜鸟搬砖记 1万+

前端代码记录(笔试代码)

在数组原型上添加一个删除重复元素的方法 //第一种 <script> var arr=[1,2,3,4,1,3]; var newArr=[]; Array.prototype.delSame=function(arr){ for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]==...

u014183772的专栏 262
上一篇: Javascript——<input>: 输入(表单输入)元素的type和样式属性
下一篇: Javascript——事件对象和常用的鼠标事件
mintsolace
博客等级 码龄9年 31粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值