javascript事件委托

Javascript的事件捕获和事件冒泡,面试高频题目 我们在外层div和内层div的onclick事件上都绑定了方法,打开浏览器试试。当我们点击外层绿色部分,外层div的事件响应了;让我们点击内层蓝色部分,内层div的事件先响应,然后外层div的事件再响应。所以我们很容易得出结论,浏览器是先找到当前被点击的元素,如果该元素上注册了onclick事件则响应;然后浏览器继续寻找被点击元素的父元素,如果其也注册了onclick事件,则该事件也响应,然后再继续向上层寻找。这就是JS的事件冒泡机制。 阅读详情

何为事件委托


再解释什么是事件委托之前,补充一下事件冒泡:

事件流:描述从页面接受事件的顺序,IE事件流为事件冒泡,而Netscape的事件流为事件捕获;
事件冒泡:事件开始从最具体的元素(文档中嵌套层次最低的那个节点)接受,然后逐级向上传播到较为不具体的节点。


事件委托利用事件冒泡原理,当触发嵌套较深的元素的时候,这个触发会冒泡到叫深的事件,例如页面中的某个div被点击,这个点击事件会冒泡到body,body也会被点击。利用这个特性,可以在嵌套较浅的元素绑定事件处理函数。具体做法如下:

<body>
  <div class="a">目标事件对象1</div>
  <div class="a">目标事件对象2</div>
  <div class="a">目标事件对象2</div>
 </body>

这里写图片描述

body下有三个div元素,想实现当点击任何一个div时候,都会弹出div is clicked



1. 传统的做法:需要通过遍历div,在每个div上依次绑定事件

       //传统做法
       var divs = document.getElementsByTagName('div');
       for (var i = 0; i < divs.length; i++){
         divs[i].addEventListener('click', function(){
            alert('div is clicked');
          });
       }

这种传统做法的弊端:绑定事件太过于繁琐;当在新添加了一个div时候,必须給新添加的这个div单独绑定事件,不然不会触发事件。



2. 原生javascript实现事件委托:

在父元素body上绑定事件,将事件委托给body监听:
利用事件对象event的target方法对事件触发的目标进行判断

 //原生方法实现事件委托          document.body.addEventListener('click',function(event){
        if (event.target.nodeName == 'DIV'){
            alert("div is click");
        }
     },false);



3. jQuery实现事件委托:

     //jQuery方法实现事件委托
       $(document.body).on('click', 'div', function() {
          alert('div is click');
       });

将目标对象的选择器传给on方法的第二个参数,即可实现事件委托。


事件委托的优点

1、不必一个一个依次給目标对象绑定事件,直接绑定在父元素上,操作更简单;
2、当新添加需要绑定的子元素时,不须单独給这个元素绑定,自动会有绑定事件。

CiteSpace基础操作(CNKI数据的导入分析)(一) 1 Cite Space简单介绍 2 文献导入 2.1 打开知网,选择高级检索 阅读详情

相关推荐

目标检测数据集 第059期-基于yolo标注格式的水果李子检测数据集(含免费分享)

李子作为中国三大水果之一,种植历史超 3000 年,在市场中占据重要地位。传统李子种植、施肥、采摘依赖大量人力,存在资源浪费、产量估算不准、采摘时机难把控等问题。此前,农业领域缺乏针对 “未成熟李子” 的专用数据集,现有水果检测数据集多聚焦于成熟果实(如苹果、柑橘),且未覆盖李子种植的复杂自然场景。在使用该数据集进行学术研究时,应遵守相关的学术规范,引用该数据集的来源,尊重数据集创作者的劳动成果。,用于训练改进型模型,解决李子精准检测的核心痛点。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 772

【JavaScript】事件委托详解

事件委托(Event Delegation)是 JavaScript 中的一种事件处理机制,它允许开发者将事件监听器绑定到父元素,而不是每个子元素。当某个子元素触发事件时,事件会冒泡到父元素,由父元素来处理该事件。事件委托的核心思想是利用 JavaScript 的事件冒泡机制。事件从最深的子元素开始触发,逐级向上传递,直到根元素或者被阻止。通过这种机制,开发者可以通过在父元素上绑定事件监听器,来处理子元素上的事件,从而减少事件监听器的数量,提升性能。

lph159的博客 4643

KUKA 虚拟调试实战——打通Simpro4.1与OfficeLite8.6的通信与实时控制链路

本文详细介绍了KUKA虚拟调试实战,重点解析如何打通Simpro4.1与OfficeLite8.6的通信与实时控制链路。通过环境搭建、权限配置、机器人型号匹配等关键步骤,帮助工程师高效完成机器人轨迹规划和PLC联锁逻辑验证,大幅降低真机调试风险。文章还提供了典型报错解决方案和实时控制优化技巧,适用于工业机器人仿真与培训场景。

weixin_30907935的博客 448

Vue之基础语法

Vue之基础语法 一 指令属性的基本使用 1. v-cloak解决闪烁 (1)解决插值表达式的闪烁问题。 (2)闪烁问题:在页面加载的过程中,在页面中的{{}}插值表达式首先会被页 面认可为是html元素中的实在存在的内容。所以浏览器会首先将{{}} 展现在页面上,页面加载完毕后,插值表达式{{}}才会真正的转变为 动态赋予的值。这就会造成一种现象,如果将来终端在访问服务器的 过程中,网速较慢(网络比较卡),那么我们的{{}}会首先展现出来, {{}}展现出来之后,会一闪而过,最终显示的是最终被赋予的值 2

hcyxsh的博客 279

ubuntu22.04 安装部署 openclaw

ubuntu22.04 安装部署 openclaw

nalanxiaoxiao2011的博客 987

编程语言的未来走向:趋势、挑战与机遇

同时,鼓励他们接触和掌握一些专业领域的开发工具和技术框架,比如Web开发中的JavaScript、React.js,数据分析的Python(Pandas, NumPy, Matplotlib等),以及人工智能和机器学习领域的TensorFlow、PyTorch等。当前,全球范围内正积极推动编程教育的普及化,从儿童启蒙阶段到高等教育阶段,乃至终身学习的过程中,如何优化编程语言的教学方法、提高教学质量,并将其广泛应用于不同领域,是教育者与政策制定者面临的重大课题。未来,编程语言的多样化和包容性将会继续加强。

zrc_xiaoguo的博客 1829

div添加一个点击事件(绑定点击事件)

1、HTML onclick 事件属性 https://www.feiniaomy.com/post/339.html https://www.w3school.com.cn/tags/event_onclick.asp 2、JavaScript 详说事件机制之冒泡、捕获、传播、委托 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>

l_degege的专栏 1万+

《多模态融合改进》目录一览 | 专栏介绍 :全网 第一份 完整的多模态改进教程,提供《多模态模型改进完整项目包》-开箱即用

在大家订阅专栏后,便可获得多模态模型改进完整项目包-开箱即用,方便简单

Limiiiing的博客 1万+

事件委托

事件委托就是把元素的事件委托给另一个元素 事件委托是利用事件的冒泡原理来实现的,何为事件冒泡呢?就是事件从最深的节点开始,然后逐步向上传播事件,举个例子:页面上有这么一个节点树,div>ul>li>a;比如给最里面的a加一个click点击事件,那么这个事件就会一层一层的往外执行,执行顺序a>li>ul>div,有这样一个机制,那么我们给最外面的div加点击事件,那么里面的ul,li,a做点击事件的时候,都会冒泡到最外层的div上,所以都会触发,这就是事件委托,委托它们父级

weixin_42638161的博客 196

UE5实现物体高亮描边效果(含UE相关源码浅析)

UE5实现物体高亮描边效果

专注GIS开发 7334

【异常】came as a complete surprise to me,IllegalArgumentException: The template string is not valid.

是Spring AI中用于生成提示词(prompt)的一个类。提示词对于与大语言模型交互至关重要,因为它们指导模型生成特定类型的响应。允许开发者创建包含占位符的模板字符串,并通过提供具体的值来填充这些占位符,从而动态地生成个性化的提示词。

奶爸的编程之路,也就一周冷个三天 748

JavaScript(JQ)事件委托以及JS闭包小记

一开始看的时候有些晕,可以监听DOM元素的方法太多,主要是写在<script></script>,下面列出来理清楚: JS原生: document.getElementById("menuultest").onmouseover = function(ev){ }; JQ:该段参考自https://codeplayer.vip/p/j7sq1 // jQue...

lan_学习分享 1919

Coze实战:解锁多Bot协同与条件分支工作流的奥秘

本文详细介绍了在字节跳动Coze平台实现多Bot协同与条件分支工作流的方法。首先阐述了Coze平台的功能优势,包括丰富的插件、知识库和工作流功能。随后分步骤讲解了多Bot协同的实现:从准备工作、创建Bot到协同配置,并提供了电商客服的实例演示。在条件分支工作流部分,详细说明了条件节点的作用类型、条件设定方法以及具体配置操作,强调测试优化的重要性。最后通过电商平台综合案例,展示了多Bot协同与条件分支的实际应用效果,并针对常见问题提供解决方案。文章为开发者在Coze平台上构建智能应用提供了实用指导,有助于提升

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 450

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

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

jiaojsun的博客 1574

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JavaScript事件代理(事件委托)_js事件代理

举个通俗的例子比如一个宿舍的同学同时快递到了,一种方法就是他们一个个去领取,还有一种方法就是把这件事情委托给宿舍长,让一个人出去拿好所有快递,然后再根据收件人一 一分发给每个宿舍同学;在这里,取快递就是一个事件,每个同学指的是需要响应事件的 DOM 元素,而出去统一领取快递的宿舍长就是代理的元素,所以真正绑定事件的是这个元素,按照收件人分发快递的过程就是在事件执行中,需要判断当前响应的事件应该匹配到被代理元素中的哪一个或者哪几个。

2401_89224864的博客 774

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

body click js 委托_javascript事件委托和jquery事件委托

元旦过后,新年第一篇。初衷:很多的面试都会涉及到事件委托,前前后后也看过好多博文,写的都很不错,写的各有千秋,自己思前想后,为了以后自己的查看,也同时为现在找工作的前端小伙伴提供一个看似更全方位的解读事件委托的地方来认识了解他的原理,本篇文章汇总了两个版本的事件委托:javascript、jquery;事件委托的定义:利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。事件委托的优...

weixin_39945816的博客 209

JavaScript 事件委托

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

前端梦工厂 1492

body click js 委托_javascript事件监听与事件委托

事件监听与事件委托在js中,常用到element.addEventListener()来进行事件的监听。但是当页面中存在大量需要绑定事件的元素时,这种方式可能会带来性能影响。此时,我们可以用事件委托的方式来进行事件的监听。每个事件都经历三个阶段捕获到达目标冒泡事件委托需要用到事件的冒泡,冒泡就是事件发生时,上层会一层一层的接收这个事件。如下页面结构:按钮当点击按钮,首先button接收到事件,然后...

weixin_28936649的博客 1370

JavaScript(js)事件冒泡、事件捕获、事件委托详解

JavaScript和HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口发生的一些特定的交互瞬间。可以使用监听器(或事件处理程序)来预定事件,以便事件发生时执行相应的代码

欢迎大家交流前端开发技术、经验及各种知识沉淀 748

Javascript系列之(二)——js中的事件委托及其封装

Js中的事件委托及其封装 今天来学习事件委托及其封装 介绍 首先我们来看一下事件委托的介绍和定义,“委托”,顾名思义就是自己不想做,委托给别人做;“事件委托”,就是自己不想做某个事件,委托给其他元素做。 定义 将多个相同子元素的相同事件,绑定给页面上现存的共同的父元素,利用事件冒泡,配合事件对象身上的事件源找到真正点击的元素 优点 节省性能; 可以给页面上暂时不存在的元素绑定事件 缺点 在事件委托...

Claire_Moon的博客 560

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

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

xiaban_的博客 2855

【javaScript】js中的事件委托

前言 续上一章节的事件冒泡的另一大好处 >>> 事件委托 事件委托 概念: 事件委托:也称事件代理 就是利用冒泡的原理 把加事件加到父级上,触发执行效果 场景分析: 需求: 有一个列表,当鼠标移入每个li,背景颜色变红 当不用时间委托时我么可以这样写: window.onload = function(){ var Ul = document.getElementBy...

Umbrella_Um的博客 298

javaScript事件委托

事件委托(是 JavaScript 中一种高效处理事件的设计模式,核心思想是将子元素的事件委托给父元素(或更上层的祖先元素)处理,利用事件冒泡机制实现对动态生成元素的事件监听

0.0的博客 474

JS事件委托

作用:事件委托主要用来减少内存消耗,不用处理多次循环绑定 使用方法: var target = document.getElementsById("获取元素") //元素调用 target.addEventListener(type, listener, options); type:必选参数,需要绑定的事件名称,"不要带on" listener:必选参数,回调函数,你需要绑定的方法; options:可选参数,默认为false;表示"事件冒泡",设置为true后为"事件捕获" 1、捕获阶段:事件从win

YuHang6686的博客 8938

js实例分析JavaScript中的事件委托和事件绑定

 我们在学习JavaScript中,难免都会去网上查一些资料。也许偶尔就会遇到“事件委托”(也有的称我“事件代理”,这里不评论谁是谁非。以下全部称为“事件委托”),尤其是在查JavaScript的事件处理的时候。但是,大多数时说的是“事件绑定”,对于“事件委托”,或是不提,或是浅尝辄止。对于我这个比较好奇的人来说,实在很蛋疼。尤其是想更多的了解“事件委托”的时候。   这次干脆一劳...

dgce32897的博客 326
上一篇: 利用!!window.ActiveXObject监测IE浏览器
下一篇: 用vue-router和webpack搭建路由项目
景洪在编程
博客等级 码龄9年 13粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值