JS事件委托模型和例子

一文大白话讲清楚javascript事件、事件模型、事件冒泡和捕获以及事件代理委托 一文讲大白话清楚javascript事件、事件模型以、事件冒泡和捕获以及事件代理委托 阅读详情

在JavaScript中,事件委托(Event Delegation)是一种用于处理事件的技术,它利用了事件冒泡(Event Bubbling)的特性。通过事件委托,你可以将事件监听器添加到一个父元素上,而不是每个子元素上,这样可以减少内存使用,提高性能,特别是当需要处理大量相似元素或动态添加的元素时。

以下是一个使用事件委托模型的简单例子,该例子展示了如何监听动态添加到页面中的按钮的点击事件:

HTML:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Event Delegation Example</title>

</head>

<body>

<div id="buttonContainer">

  <!-- 初始按钮 -->

  <button class="myButton">Click Me</button>

  <!-- 这里可以动态添加更多按钮 -->

</div>

<script src="event-delegation.js"></script>

</body>

</html>

 

 

JavaScript (event-delegation.js):

// 获取容器元素

const buttonContainer = document.getElementById('buttonContainer');

 

// 为容器元素添加点击事件监听器

buttonContainer.addEventListener('click', function(event) {

  // 检查被点击的元素是否是我们要处理的元素(这里是有 .myButton 类的按钮)

  if (event.target.matches('.myButton')) {

    // 处理按钮点击事件

    alert('You clicked a button!');

    console.log('Clicked button:', event.target.textContent);

  }

});

 

// 模拟动态添加按钮

setTimeout(function() {

  // 创建一个新的按钮

  const newButton = document.createElement('button');

  newButton.className = 'myButton'; // 设置类名以便事件委托可以识别

  newButton.textContent = 'Newly Added Button';

  // 将新按钮添加到容器中

  buttonContainer.appendChild(newButton);

}, 2000); // 两秒后添加新按钮

在这个例子中,我们首先在buttonContainer元素上添加了一个点击事件监听器。然后,我们使用了event.target.matches('.myButton')来检查被点击的元素是否匹配我们想要的元素(即具有.myButton类的按钮)。如果匹配,我们就执行相应的操作(在这个例子中是弹出一个警告框并打印按钮的文本内容到控制台)。

 

之后,我们使用setTimeout来模拟动态地向页面添加一个新的按钮。由于我们使用了事件委托,所以这个新添加的按钮也会自动拥有相同的事件处理逻辑,而不需要我们为它单独添加事件监听器。

 

JavaScript之事件委托实例(附原生js和jQuery代码) 下面小编就为大家带来一篇JavaScript之事件委托实例(附原生js和jQuery代码)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 立即下载

相关推荐

数值计算之 插值法(4)切比雪夫零点插值

数值计算之 插值法(4)切比雪夫零点插值前言插值点选取第一类切比雪夫多项式拉格朗日插值多项式的余项切比雪夫零点插值后记 前言 上篇插值法讨论了多项式插值的解,以及龙格现象。本篇将介绍一种在抽取节点时有效降低龙格现象的方法——切比雪夫零点插值。 插值点选取 插值多项式阶数较高时,在取值空间均匀取点,容易出现龙格现象。 即区间边缘的插值结果与原函数差异很大,而区间中央的插值结果相对较好。这表明,高阶多项式插值对区间中央的节点拟合好,而对两端节点拟合效果差。 自然而然会想到,在两端多采样一些节点,在中间少采样一

qq_41035283的博客 1万+

JS--事件的委托(代理)--使用/教程/实例

说明 本文用示例介绍JavaScript中的事件(Event)的委托(代理)的用法。 事件委托简介 事件委托,也叫事件代理,是JavaScript中绑定事件的一种常用技巧。就是将原本需要绑定在子元素的响应事件委托给父元素或更外层元素,让外层元素担当事件监听的职务。 事件代理的原理是DOM元素的事件冒泡。

IT利刃出鞘的博客 1736

那些年-SAP固定资产导入AS91 OASV

固定资产起初导入步骤: 第一部分:资产数据导入 1)两个日期配置 填写图片摘要(选填) Specify transfer date/last closed fiscal year 这里的日期填写系统切换日期,如果系统是2015-10-01上线,这里填写2015-09-3 填写图片摘要(选填) Specifylast period posted in prv system 这里指定系统切换的上一期间。这里写2015-09 填写图片摘要(选填) ​2)AS91新增 填写固定资产的分类,公司

阿土工作室 7946

【JS基础】事件委托(事件处理)

事件流,事件委托的学习心得

ZhangYu_010228的博客 660

手把手教你用MATLAB/Simulink模拟微电网潮流方向(附代码下载)

本文提供了一份详细的MATLAB/Simulink微电网潮流仿真实战指南。通过手把手教学,指导读者从零搭建包含光伏、储能和负荷的微电网模型,并模拟并网、孤岛等多种运行场景下的潮流方向变化。文章核心在于利用Simulink实现微电网的动态潮流分析与可视化,帮助工程师深入理解分布式能源系统中的功率平衡与控制策略。

weixin_28314575的博客 106

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

【JAVAScript】【4】利用事件委托简化点击事件(包含箭头函数,target)

JAVASCript利用事件委托简化点击事件 当写多个点击事件时我总是会添加很多监听函数,但是利用事件委托后仅需添加父元素的监听函数,在利用冒泡就可以为每个子元素添加监听函数,大大简化了程序 文章目录JAVASCript利用事件委托简化点击事件前言一、事件委托二、箭头函数三、Element.target四、实例总结 前言 以下是围绕事件委托(事件代理)的一个切换案例,同时补充箭头函数和Element.target 一、事件委托 JavaScript中常用绑定事件的常用技巧,“事件委托”即是把原本需要

weixin_51612770的博客 1719

【OpenClaw从入门到精通】第63篇:A股智能分析实战——用OpenClaw搭建个人量化研究助手(2026实测版)

2026年,OpenClaw已成为量化投研圈的现象级工具,八家头部券商密集发布专题研报力证其价值。传统量化投研面临技术门槛高、重复劳动多、策略迭代慢、非结构化数据处理弱四大痛点,而OpenClaw通过“AI智能体+金融Skill+量化API”的融合,实现了从数据获取、策略生成、回测验证到持仓监控的全流程自动化。本文基于2026年最新实测经验,完整呈现个人量化研究助手搭建:从阿里云部署、阿里云百炼API配置(含解析失败解决方案)、Tushare数据源接入,到PB-ROE价值选股、研报复现、自动化回测、持仓监控

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1058

原生JS实现事件委托

什么是事件委托? 它还有一个名字叫事件代理,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 举个栗子: 有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优...

Essentric_ 7999

扣子(Coze)搭建智能体完整实战指南 —— 从零基础入门到写小说及其他需求扩展开发

随着大语言模型进入应用爆发期,我们正在经历从“寻找提示词”向“构建智能体”的范式转移。扣子(Coze)作为字节跳动推出的一站式AI智能体开发与运营平台,极大地降低了AI应用开发的门槛,让非技术人员也能快速搭建具备感知、决策、行动能力的智能体。 本文将手把手带你从零开始,在扣子平台上搭建一个功能完备的**小说创作智能体**,并基于此展示如何将同一套架构扩展到其他需求场景。无论你是写作爱好者、内容创作者,还是希望用AI赋能日常工作的职场人士,这套完整的技术方案都将帮助你快速上手。

huanghm88的专栏 637

ABAP CDS HAVING 全解析:聚合之后的精准过滤、最佳实践与可运行示例

摘要: 本文针对具备ABAP与CDS基础的开发者,详解HAVING在ABAP CDS中的核心用法。HAVING专用于过滤GROUP BY后的聚合结果(如SUM、COUNT),与WHERE的分工明确:前者处理聚合值,后者过滤原始记录。通过销售额阈值、质量分析、财务对账三类典型场景,结合性能优化建议(如优先使用WHERE索引过滤),说明实际应用。文中提供经典CDS View与View Entity两种实现代码,并附Open SQL消费示例,帮助开发者快速落地。常见误区(如聚合条件误写至WHERE)与规避方法亦被

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 219

委托模式

委托模式 委托模式就是利用事件的冒泡机制把一个或者一组元素的事件委托到它的父层或者更外层元素上,准确来说不属于通常定义的设计模式范畴,但事件委托是一种非常有用的代码构建技巧。 描述 事件委托,委托模式就是利用事件的冒泡机制把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上,然后在外层元素上去执行函数。 举个例子,比如一个宿舍的同学同时快递到了,一种方法就是他们都一个个去领取,还有一种方法就是把这

WindRunnerMax 791

Mac版 Android Studio自带模拟器无法联网解决方案

前言 作为一枚安卓开发者,免不了使用模拟器来开发调试(毕竟它比手机方便太多)。但是因为适配需要,我们会更多的使用真机开发调试,那么当模拟器遇到这样那样的问题,我们往往会无从下手,其中最烦的就是网络问题。 我最近图方便,又重新用起了模拟器,但是发现联网失败,用模拟器内置的浏览器也打不开网页,于是百度上一通找,毫无效果,各种说用cmd命令行设置模拟器dns的都没用,显示没有什么dns文件啥的,后来...

陈万洲的专栏 1万+

html 事件源,JavaScript 几个比较零碎的点 -- 事件源和事件委托模型.

在 JavaScript 中,我们给一个HTML元素绑定事件响应函数.在执行事件响应函数的时候,我们可以拿到一个和当前执行事件相关联的事件对象.这个事件对象包含了此次事件产生的一些关键数据.其中,最重要的数据之一,就是事件源.事件对象和事件源在上一节,阻止事件冒泡中,我们知道了每一次事件执行都会产生了一个 e 的是对象.在W3C标准模式下,它会以事件响应函数的第一个形参的位置出现.click me...

weixin_39739404的博客 248

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JavaScript中的事件委托与事件冒泡

JavaScript中的事件委托与事件冒泡,以及常用的event的属性,其中主要详细讲了event.target

xiaban_的博客 2855

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JavaScript 事件冒泡和事件委托

JavaScript 事件冒泡和事件委托

ltlt654321的博客 2244

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

JavaScript 事件委托

要使用事件委托,需要保证事件能够发生冒泡,适合使用事件委托的事件有 click、mousedown、mouseup、keydown、keyup、keypress 等。需要注意的是,虽然 mouseover 和 mouseout 事件也会发生事件冒泡,但处理起来非常麻烦,所以不推荐在 mouseover 和 mouseout 事件中使用事件委托。另外,对于不会发生事件冒泡的事件(例如 load、unload、abort、focus、blur 等),则无法使用事件委托。

前端梦工厂 1492

JS 事件代理和事件委托

事件委托的概念理解 为什么叫事件委托?它还有一个名字叫事件代理。 JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 那这是什么意思呢?网上的各位大牛们讲事件委托基本上都用了同一个例子,就是取快递来解释这个现象,我仔细揣摩了一下,这个例子还真是恰当,我就不去想别的例子来解释了,借花献佛,我摘过来,大家认真领会一下事件委托到底是一个什么原理: 有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托

csdssdn的博客 2622

JavaScript系列—简述JS中的事件委托和事件代理

JS中的事件委托和事件代理 什么是事件委托? 事件委托还有一个名字叫事件代理,JS高程上讲:事件委托就是利用事件冒泡,只制定一个时间处理程序,就可以管理某一类型的所有事件。我用取快递来解释这个现象: 有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台代为签收。现实当中,我们大都采用委托的方案。前台收到快递后,她会判断收件人是谁,然后按照收件人的要...

jiaojsun的博客 1574

JavaScript 事件委托详解

基本概念 事件委托,通俗地来讲,就是把一个元素响应事件(click、keydown......)的函数委托到另一个元素; 一般来讲,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上aa时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上,然后在外层元素上去执行函数。 举个例子,比如一个宿舍的同学同时快递到了,一种方法就是他们都傻傻地一个个去领取,还有一种方法就是把这件事情委托给宿舍长,让一个人出去拿好所有快递,然后再根据收件人一一分发给

_ 3304

JavaScript中的事件模型/事件流以及React的事件委托

完成如下界面,要求点击空白处时关闭这个弹窗。弹窗界面是用组件写出来的,背景变暗的效果是通过窗口增加了一层幕布,然后层级降低完成的。若在幕布上面绑定一个关闭弹窗的回调函数,会在点击复制验收码的时候也关闭弹窗。要解决这种多个元素层叠在一起,精确控制事件执行的问题,要了解事件模型以及事件流。

C1160793279的博客 920

什么是事件冒泡和事件委托?如何实现事件委托?

一、事件冒泡 1、什么是事件冒泡 2、阻止事件冒泡的方式 3、事件冒泡的优点 二、事件委托/事件代理 1、什么是事件委托 2、为什么要用事件委托? 3、事件委托的原理 4、事件委托怎么实现 5、事件源 6、 实现不同的点击效果 7、 新增的节点如何实现事件委托? 8、什么样的事件可以用事件委托,什么样的事件不可以用? 9、事件委托的优缺点 事件委托是利用事件的冒泡原理来实现的。 事件冒泡就是事件从最深的节点开始,然后逐步向上传播事件。如果要用事件委托,就会将所有的操作放到 js

小草莓的博客 3257

深入解析 JavaScript 事件委托

详细介绍 JS 事件委托:一次监听,轻松管理子元素事件,同时也是前端常见的面试题之一。

weixin_52648900的博客 2113

【JavaScript】事件代理和事件委托

事件代理

南栀的博客 1225

JS 事件委托

JS 事件委托事件委托1. 基本概念2. 事件传播3. 事件委托的好处 事件委托 1. 基本概念 事件委托,简单的来说,就是把一个元素的响应事件的函数委托到另一个元素。一般来讲,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上,然后在外层元素上去执行函数。 前面提到 DOM 中事件委托的实现是利用事件冒泡的机制,那么事件冒泡是什么呢? 2. 事件传播 事件的传播分为三个阶段:捕获阶段、目标阶

p1967914901的博客 7074

JavaScript之事件委托和事件代理

JavaScript之事件委托和事件代理 事件委托概念: 事件委托还有一个名字叫事件代理,JS高程上讲:事件委托就是利用事件冒泡,只制定一个时间处理程序,就可以管理某一类型的所有事件。 简单的说就是原本需要一个一个去处理的事件,现在只需要一个总的事件去管理他们即可 (自己理解的,可能有偏差) 用事件委托的意义 在JavaScript中,添加到页面上的事件处理次数将关系到页面的整体运行性能,访问do...

low666的博客 909
上一篇: JS中的substr()和substring()函数有什么区别
下一篇: Oracle如何定位消耗资源最多的sql
codemami
博客等级 码龄3年 1369粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值