| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 关于js中事件的event.stopPropagation()方法的理解与举例说明 -> 正文阅读 |
|
[JavaScript知识库]关于js中事件的event.stopPropagation()方法的理解与举例说明 |
event.stopPropagation() 阻止捕获和冒泡阶段中当前事件的进一步传播。 在这之前先说一下事件触发的原理
接下来用4个嵌套的div举例说明
?具体css代码不做展示,效果图如下: ? JavaScript代码如下:
?event.stopPropagation() 阻止捕获和冒泡阶段中当前事件的进一步传播。 ????????说白了就是当侦听的事件是捕获时,阻断的就是捕获过程,当侦听的事件是冒泡时,阻断的就是冒泡过程 1. 接下来看第一个例子,当设置div3是冒泡时,也就是默认值false
那当阻断div3时,点击div4时
那输出的结果就是 因为,所有的div都设置侦听的是冒泡阶段,所以捕获阶段不触发,冒泡输出结果从内往外输出,应该是div4->div3->div2->div1 但是在div3用了e.stopPropagation()阻止了冒泡进一步传播,所以只输出了div4->div3 2、当设置四个div都是侦听捕获阶段时,当阻断div3时,点击div4时
?输出结果应是 ?因为侦听的四个div都是捕获阶段,所以应该由外向内,输出的是div1 -> div2 -> div3 ->div4 但是div3用e.stopPropagation()阻止了捕获的进一步传播,所以只输出div1 -> div2 -> div3 3、第三个例子,设置div1,div3侦听的是冒泡阶段,div2,div4侦听的是捕获阶段,那么当设置阻断div3时
这个时候四个div有捕获阶段,也有冒泡阶段,优先捕获阶段,也就是先输出捕获阶段div2、div4,后输出冒泡阶段div3、div1 注意,捕获阶段由外向内,所以输出的是div2 -> div4 冒泡阶段由内向外,所以输出的是div3 -> div1 ? 所以最后输出应该是div2 -> div4 ->?div3 -> div1 但是div3用e.stopPropagation()阻止了冒泡的进一步传播,所以输出结果应该是div2 -> div4 ->?div3 ? 那么同理 如果设置div1,div3侦听的是捕获阶段,div2,div4侦听的是冒泡阶段,那么当设置阻断div3时
这个时候同样四个div有捕获阶段,也有冒泡阶段,优先捕获阶段,也就是先输出捕获阶段div1、div3,后输出冒泡阶段div4、div2 再次注意,捕获阶段由外向内,所以输出的是div1 -> div3 冒泡阶段由内向外,所以输出的是div4 -> div2 所以最后输出应该是div1 -> div3 ->?div4 -> div2 但是div3用e.stopPropagation()阻止了捕获的进一步传播,所以输出结果应该是div1 -> div3 ?简单总结一些注意点: 因为上边的例子都是点击最里层的元素div4,所以根据事件的触发原理:捕获阶段 -> 目标阶段(不显示) -> 冒泡阶段(默认) 点击的是div4,所以目标阶段就是div4,捕获阶段就是有外向内,div1 -> div2 -> div3 -> div4 冒泡阶段是由内向外div4 -> div3 -> div2 -> div1, 所以整个点击div4事件的原理就是:
设置在哪个阶段 侦听,就获取哪个阶段的元素或方法,侦听捕获阶段1,3,就获取div1,div3 侦听冒泡阶段2,4,就获取div4,div2 千万注意捕获阶段和冒泡阶段的顺序! e.stopPropagation() 就是阻止之后的冒泡或者捕获继续传播,说白了就是截断,不再侦听 后续有什么不懂可以私聊我,或者评论 最后大家可以试着想一下,当点div1,div2,div3时输出div1,点div4时,输出div4。这样该怎么实现? |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:03:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |