js【详解】事件
给 DOM 节点绑定事件
推荐使用 addEventListener 函数
- 第一个参数:事件名称
- 第二个参数:事件处理函数(第一个参数为 event)
- 第三个参数:
- true 采用捕获法来处理事件
- false 【推荐】采用冒泡法来处理事件
let div1= document.getElementById('div1');
div1.addEventListener('click', function(event){alert('div1_clicked!');
}, false);
event 参数的用途
-
event.target 获取触发事件的元素
-
event.preventDefault() 阻止默认行为
默认行为如:a标签点击跳转、鼠标右键弹出菜单、滑动滚轮控制滚动条等
-
event.stopPropagation() 阻止事件传播(冒泡/捕获)
事件流(含事件冒泡,事件捕获)
https://blog.csdn.net/weixin_41192489/article/details/133140101
【必考】事件代理
借助其他元素来响应自身事件即事件代理。
应用范例:对于内容很多的列表,为了避免给每一个列表中的元素都绑定一个点击事件,仅在列表的容器元素上绑定点击事件,则当点击列表中的元素时,因事件冒泡机制,会触发容器元素的点击事件,再在该事件中,识别出点击的具体元素,并执行相应的处理。
// 列表内容很多的容器
const div3 = document.getElementById("div3");// 点击列表中a标签的元素时,弹窗显示其内容
div3.addEventListener("click", (event) => {event.preventDefault();let target = event.target;if (target.nodeName === "A") {alert(target.innerHTML);}
});
【考题】写一个通用的事件绑定函数
/*** 通用的事件绑定函数(支持事件代理)* @param {*} elem 触发事件的元素* @param {*} type 事件类型* @param {*} selector 选择器* @param {*} fn 事件处理函数*/
function bindEvent(elem, type, selector, fn) {//若只传入了三个参数(即普通的事件绑定),则第三个参数才是事件处理函数if (fn == null) {// 将第三个参数设置为事件处理函数fn = selector;// 将选择器置空selector = null;}// 绑定事件elem.addEventListener(type, (event) => {// 获取触发事件的元素const target = event.target;if (selector) {// 传入了选择器,则为事件代理绑定if (target.matches(selector)) {// 若触发事件的元素与选择器匹配,则执行事件处理函数fn.call(target, event); // 利用 call 改变事件处理函数中 this 的指向}} else {// 没有选择器,为普通事件绑定fn.call(target, event);}});
}
使用
// 普通事件绑定
const btn1 = document.getElementById('btn1')
bindEvent(btn1, 'click', function (event) {event.preventDefault()alert(this.innerHTML)
})// 事件代理绑定
const div3 = document.getElementById('div3')
bindEvent(div3, 'click', 'a', function (event) {event.preventDefault()alert(this.innerHTML)
})
【考题】描述事件冒泡的流程
事件基于 DOM 树形结构顺着触发元素不断向上传播(由内层节点传播到外层节点),触发各级父辈节点对应的事件,若父辈节点中没有阻断事件的冒泡传播,则会一直传播到window 对象。
应用场景:事件代理(参考上文)
【考题】无限下拉图片列表,如何监听每个图片的点击
通过事件代理实现,具体逻辑如下:
- 在列表容器上绑定点击事件
- 点击图片时,会冒泡触发列表容器的点击事件
- 通过 e.target 获取到触发元素
- 通过 matches 判断触发元素是否是图片
- 是图片,则执行相应的代码,不是图片则不执行。
相关文章:
js【详解】事件
给 DOM 节点绑定事件 推荐使用 addEventListener 函数 第一个参数:事件名称第二个参数:事件处理函数(第一个参数为 event)第三个参数: true 采用捕获法来处理事件false 【推荐】采用冒泡法来处理事件 let div1 docu…...
webpack5基础--14_优化css
Css 处理 提取 Css 成单独文件 Css 文件目前被打包到 js 文件中,当 js 文件加载时,会创建一个 style 标签来生成样式 这样对于网站来说,会出现闪屏现象,用户体验不好 我们应该是单独的 Css 文件,通过 link 标签加载…...

Skywalking(9.7.0) 告警配置
图片被吞,来这里看吧:https://juejin.cn/post/7344567669893021736 过年前一天发版,大家高高兴兴准备回家过年去了。这时候老板说了一句,记得带上电脑,关注用户反馈。有紧急问题在高速上都得给我找个服务区改好。 但是…...
删除、创建、验证Kafka安装自带的__consumer_offsets topic
删除Kafka自带Topic 一般情况下,你删除Kafka自带的__consumer_offsets topic,会报错提示不能删除。 倔强的你直接找到zookeeper删掉了它,list查看确实没有这个topic了,但是这会导致消费者和偏移量无法记录。 创建Kafka自带的Topi…...

在文件夹下快速创建vue项目搭建vue框架详细步骤
一、首先在你的电脑目录下新建一个文件夹 进入该文件夹并打开控制台(输入cmd指令) 进入控制台后输入 vue create springboot_vue (自己指定名称) 如果出现这类报错如:npm install 的报错npm ERR! network request to http://registry.cnp…...

蓝桥杯倒计时 36天-DFS练习
文章目录 飞机降落仙境诅咒小怂爱水洼串变换 飞机降落 思路:贪心暴搜。 #include<bits/stdc.h>using namespace std; const int N 10; int t,n; //这题 N 比较小,可以用暴力搜搜复杂度是 TN*N! struct plane{int t,d,l; }p[N]; bool vis[N];//用…...

ctfshow web入门 php特性总结
1.web89 intval函数的利用,intval函数获取变量的整数值,失败时返回0,空的数组返回,非空数组返回1 num[]1 intval ( mixed $var [, int $base 10 ] ) : int Note: 如果 base 是 0,通过检测 var 的格式来决定使用的进…...

Media Encoder 2024:未来媒体编码的新纪元 mac/win版
随着科技的飞速发展,媒体内容已成为我们日常生活中不可或缺的一部分。为了满足用户对高质量视频内容不断增长的需求,Media Encoder 2024应运而生,它凭借卓越的技术和创新的特性,重塑了媒体编码的未来。 Media Encoder 2024 mac/w…...
2024年AI辅助研发趋势:数智时代革新新引擎
随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面,而在软件开发领域,AI辅助研发正成为一股不可忽视的力量。本文将探讨2024年AI辅助研发的趋势,以及它如何成为数智时代革新的新引擎。 AI辅助研…...

2024年家政预约上门服务小程序【用户端+商家端+师傅端】源码
024最新家政预约上门服务小程序源码 主要功能:商家入住,师傅入住,缴纳保正金 支持师傅,抢单派单 支持多城市多门下单,支持预约上门服务到店核销 支持补差价义价,支持区域服务限制 基于thinkphp和原生小程序开发...

数据结构:静态链表(编程技巧)
链表的元素用数组存储, 用数组的下标模拟指针。 一、理解 如果有些程序设计语言没有指针类型,如何实现链表? 在使用指针类型实现链表时,我们很容易就可以直接在内存中新建一块地址用于创建下一个结点,在逻辑上&#x…...
python中的**可以表示什么??
在Python中,** 有两个主要的用途: 作为幂运算符:a ** b 表示a的b次方。例如,2 ** 3 会返回 8,因为2的3次方等于8。 在函数调用或定义时作为关键字参数的解包: 当你有一个字典,并且你想将这个字…...

使用 Git 跟踪项目文件
本章内容为:用Django 写学习笔记程序第三章.2部署程序摘录,详情内容查看请跳转下方链接: 用Django 写学习笔记程序第三章.2部署程序 文章目录 使用 Git 跟踪项目文件虚拟环境中安装 gitgit 是什么git 安装完成后的简单配置创建项目忽略文件初…...
C++从零开始(day47)——set,map学习使用
这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于set和map的知识点 1.关联式容器 在前面&#…...

手机和电脑同步的好用记事本软件有哪些
我常常需要随手记录各种信息,以便随时查阅和使用。比如,在下班路上,我会用手机记录明天要处理的工作事项、购物清单,或是某个突然迸发的创意想法;而在办公室,我则需要在电脑上整理会议纪要、项目计划&#…...

使用CSS制作动态的环形图/饼图
使用纯 CSS Animation conic-gradient 实现一个环形图。 饼图的实现思路和环形图一样,去掉中间的圆形遮盖 after 伪类元素即可。 一、构建基础样式 构建圆形节点和中间的遮盖元素。 <style>body {background-color: rgb(130, 226, 255);}.circle {top: 16…...

掌握React中的useEffect:函数组件中的魔法钩子
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

WPF 窗口添加投影效果Effect
BlurRadius:阴影半径 Color:颜色 Direction:投影方向 ShadowDepth:投影的深度 <Window.Effect><DropShadowEffect BlurRadius"10" Color"#FF858484" Direction"300" ShadowDepth&quo…...

Gitlab CICD 下载artifacts文件并用allure打开,或bat文件打开
allure命令行打开aritfacts报告 首先下载allure.zip,并解压 配置环境变量 使用命令行打开allure文件夹 allure open 2024-03-11-14-54-40 2024-03-11-14-54-40 包含index.html Bat文件打开artifacts There are 2 html reports in the download artifacts.zip S…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:NavRouter)
导航组件,默认提供点击响应处理,不需要开发者自定义点击事件逻辑。 说明: 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 必须包含两个子组件,其中第二个子组…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)
引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...

密码学基础——SM4算法
博客主页:christine-rr-CSDN博客 专栏主页:密码学 📌 【今日更新】📌 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 编辑…...
Qt Quick Controls模块功能及架构
Qt Quick Controls是Qt Quick的一个附加模块,提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中,这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构,与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...

react更新页面数据,操作页面,双向数据绑定
// 路由不是组件的直接跳转use client,useEffect,useRouter,需3个结合, use client表示客户端 use client; import { Button,Card, Space,Tag,Table,message,Input } from antd; import { useEffect,useState } from react; impor…...

智警杯备赛--excel模块
数据透视与图表制作 创建步骤 创建 1.在Excel的插入或者数据标签页下找到数据透视表的按钮 2.将数据放进“请选择单元格区域“中,点击确定 这是最终结果,但是由于环境启不了,这里用的是自己的excel,真实的环境中的excel根据实训…...