事件触发、事件捕获与事件冒泡(js的问题)

事件捕获与事件冒泡

向下是捕获阶段
---------------|    ^
---------------V    ^
---------------V    |
---------------
向上是冒泡阶段

事件对象:

事件触发时包含了事件发生的元素和属性信息

var div3 = document.getElementById("div3");
div3.addEventListener("click", function (e) {var e = e || window.event; // IE 8  window.event arguments[0]console.log(e);
}, false); // true: 捕获, false: 冒泡(默认)

事件的周期

--------------------
div1                |
---------------     |
div2           |    |
--------       |    |
div3   |       |    |
--------       |    |
---------------     |
--------------------
<style>
#div1 {width: 300px;height: 300px;background-color: green;
}#div2 {width: 200px;height: 200px;background-color: blue;
}#div3 {width: 100px;height: 100px;background-color: grey;
}
</style><div id="div1">div1<div id="div2">div2<div id="div3">div3</div></div>
</div><script>
// 事件对象:时间触发时包含了事件发生的元素和属性信息
var div3 = document.getElementById("div3");
div3.addEventListener("click",function (e) {console.log("div3");},false
);var div2 = document.getElementById("div2");
div2.addEventListener("click",function (e) {console.log("div2");},false
);var div1 = document.getElementById("div1");
div1.addEventListener("click",function (e) {console.log("div1");},false
);/**
* 点击div 3
* 
* div3 -> div2 -> div1
*/
</script>

阻止冒泡:

e.stopPropagation()e.cancelBubble = true // IE8

事件冒泡的应用:事件委托

<div id="demo"><li>aaaaaa</li><li>bbbbbb</li><li>cccccc</li>
</div><script>// 事件委托var demo = document.getElementById("demo");demo.addEventListener("click", function (e) {if (e.target.nodeName.toLowerCase() == "li") {console.log(e.target.innerHTML);}}, false );</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C练习——银行存款

题目&#xff1a;设银行定期存款的年利率 rate为2.25%,已知存款期为n年&#xff0c;存款本金为capital 元,试编程计算并输出n年后本利之和deposit。 解析&#xff1a;利息本金*利率&#xff0c;下一年的本金又是是今年的本利之和 逻辑&#xff1a;注意浮点数&#xff0c;导入…

经典目标检测YOLO系列(一)复现YOLOV1(2)反解边界框及后处理

经典目标检测YOLO系列(一)复现YOLOV1(2)反解边界框及后处理 在上个博客&#xff0c;我们提出了新的YOLOV1架构&#xff0c;这次我们解决前向推理过程中的两个问题。 经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构 1、边界框的计算 1.1 反解边界框公式的改变 1.1.1 原版…

MFC随对话框大小改变同时改变控件大小

先看一下效果; 初始; 窗口变大,控件也变大; 二个也可以; 窗口变大,控件变大; 默认生成的对话框没有WM_SIZE消息的处理程序;打开类向导,选中WM_SIZE消息,对CxxxDlg类添加该消息的处理程序;默认生成的函数名是OnSize; 添加了以后代码中会有三处变化; 在对话框类的…

call、apply、bind应用题型

这道题&#xff0c;考察的是修改this指向&#xff0c;延申到call&#xff0c;apply和bind的作用和区别。 <!DOCTYPE html> <html><head><meta charset"UTF-8"><style>/* 填写样式 */</style> </head><body><!-- …

Vue - 条件渲染简介

Vue.js 中的条件渲染是根据数据的不同状态有选择性地显示或隐藏页面元素的技术。在这篇博客中&#xff0c;我们将通过一个简单的示例来介绍 v-if、v-else-if、v-else 和 v-show 这几个关键指令的用法。 示例代码解析 <template><div><h1 v-if"isAwesome&…

连接GaussDB(DWS)报错:Invalid or unsupported by client SCRAM mechanisms

用postgres方式连接GaussDB(DWS)报错&#xff1a;Invalid or unsupported by client SCRAM mechanisms 报错内容 [2023-12-27 21:43:35] Invalid or unsupported by client SCRAM mechanisms org.postgresql.util.PSQLException: Invalid or unsupported by client SCRAM mec…

react父组件props变化的时候子组件怎么监听?

在 React 中&#xff0c;子组件可以通过 componentDidUpdate 钩子函数来监听父组件的 props 变化。这个钩子函数会在组件更新之后调用&#xff0c;可以通过比较前后的 props 值来判断是否发生了变化。 以下是一个示例代码&#xff0c;展示了父组件 props 变化时子组件的监听&a…

MySQL进阶之(一)逻辑架构

一、逻辑架构 1.1 逻辑架构剖析1.1.1 连接层1.1.2 服务层01、基础服务组件02、SQL Interface&#xff1a;SQL 接口03、Parser&#xff1a;解析器04、Optimizer&#xff1a;查询优化器05、Caches & Buffers&#xff1a; 查询缓存组件 1.1.3 引擎层1.1.4 存储层1.1.5 总结 1.…

GoLand for mac 2023.3.2 Go语言开发集成环境

GoLand 是 JetBrains 公司开发的一款专业的 Go 语言集成开发环境&#xff08;IDE&#xff09;&#xff0c;它提供了许多强大的功能来提高 Go 语言开发者的生产力和代码质量。 一、概述 GoLand 是基于 IntelliJ 平台构建的&#xff0c;继承了 IntelliJ IDEA 的强大功能和稳定性…

【2023】通过docker安装hadoop以及常见报错

&#x1f4bb;目录 1、准备2、安装镜像2.1、创建centos-ssh的镜像2.2、创建hadoop的镜像 3、配置ssh网络3.1、搭建同一网段的网络3.2、配置host实现互相之间可以免密登陆3.3、查看是否成功 4、安装配置Hadoop4.1、添加存储文件夹4.2、添加指定配置4.3、同步数据 5、测试启动5.1…

使用自带密钥 (BYOK) 的Azure信息保护云退出

上篇我们讲了使用Microsoft托管密钥的Azure信息保护云退出&#xff0c;本文我们将介绍使用自带密钥 (BYOK) 的Azure信息保护云退出。 自带密钥 (BYOK) 由客户在 nCipher HSM 中创建&#xff0c;并安全地传输到基于 HSM 的 Azure Key Vault&#xff0c;供 AIP 使用。 由于 Micro…

SeaTunnel同步PostgreSQL数据至ClickHouse(1)

ClickHouse简介 ClickHouse最初是为Yandex.Metrica世界第二大Web分析平台而开发的。多年来一直作为该系统的核心组件被该系统持续使用着。目前为止&#xff0c;该系统在ClickHouse中有超过13万亿条记录&#xff0c;并且每天超过200多亿个事件被处理。它允许直接从原始数据中动…

vue +WebSDK_V3.3.0

1.在index.html中引入js文件 <!-- 实时对讲 --><script src"./static/js/jquery-1.7.1.min.js"></script><script src"./static/js/jsVideoPlugin-1.0.0.min.js"></script><script id"videonode" src"./s…

基于element ui封装table组件

效果图&#xff1a; 1.封装表格代码如下 <template> <div><div class"TableList"><el-tablev-loading"loading"selection-change"selectionChange"class"table":data"tableData":border"hasBorde…

【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现

【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现 1 题目 赛题 B DNA 存储中的序列聚类与比对 近年来&#xff0c;随着新互联网设备的大量涌入和对其服务需求的指数级增长&#xff0c;越来越多的数据信息被产生与收集。预计到 2021 年&#xf…

如何手动升级Chrome插件/Chrome扩展程序?

Chrome 浏览器的插件&#xff08;也称为扩展&#xff09;通常会自动更新到最新版本。这是因为 Chrome 会定期检查并下载来自 Chrome 网上应用店的扩展更新。然而&#xff0c;如果你需要手动更新扩展&#xff0c;可以按照以下步骤操作&#xff1a; 打开 Chrome 浏览器。点击浏览…

.Net FrameWork总结

.Net FrameWork总结 介绍.Net公共语言运行库CLI的组成.NET Framework的主要组成.NET Framework的优点CLR在运行期管理程序的执行&#xff0c;包括以下内容CLR提供的服务FCL的组成 或 服务&#xff08;这个其实就是我们编码时常用到的类库&#xff09;&#xff1a;&#xff08;下…

408数据结构常考算法基础训练

408相关&#xff1a; 408数据结构错题知识点拾遗 408数据结构常考算法基础训练 408计算机组成原理错题知识点拾遗408操作系统错题知识点拾遗等待完善408计算机网络错题知识点拾遗 408计算机网络各层协议简记等待完善 该训练营为蓝蓝考研&#xff08;蓝颜知己&#xff09;的算…

6.5 会话与输入事件(二)

一,键盘会话 键盘输入会话是用类型SCREEN_EVENT_KEYBOARD创建的,可以与可能生成这些类型输入事件的一个或多个设备相关联。 当输入是从键盘设备输入文本时,使用键盘会话。不使用键盘会话的SCREEN_PROPERTY_MODE 属性。 二,多点触控会话 2.1 多点触控会话 多点触控(to…

Python漂浮爱心完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…