在javascript中什么是事件委托 原理是什么

来自:ok购物    更新日期:早些时候
在javascript中什么是事件委托 原理是什么~

比方说a元素里面包含了b元素(或者说a元素是b元素的父元素),当b元素触发事件时,会同时把事件冒泡给a元素,也就是说a元素也会触发事件。利用这个原理,b元素就可以不对事件做任何处理,而是委托给a元素去处理,这样,当a元素中动态添加了多个与b元素同级的元素(也就是a新添加了几个儿子)或者是b元素的子元素(也就是a的孙子),这些新添加的元素都不用再绑定事件处理函数了,通通由a元素去处理即可(a元素通过target对象就可以知道事件委托方是哪个元素,从而进行不同的处理),这样就简化了程序,也避免了相互之间发生冲突的可能性。这就是事件委托。

什么叫事件委托?他还有一个名字叫做事件代理,(时间代理 === 事件委托,现在才知道这两个是一个意思)
高程3上讲:事件委托即是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。
借鉴其他大牛的一个例子,也为自己更好的理解一下:收快递例子
有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收。
两层意思:
1.现在委托前台的同事是可以签收的,即程序中的现有的dom节点是有事件的;
2.新员工也是可以被前台mm代为签收的,即程序中新添加的dom节点也是有事件的;

要了解委托的原理,首先要理解DOM事件的过程。

Dom事件分为两个阶段,如图:

  1. 事件捕获阶段(红色箭头顺序)

  2. 事件冒泡阶段(绿色箭头顺序)


在事件捕获阶段,事件源依次从defaultView(可以理解为整个页面)一直传播到具体的目标(target)。从广泛到具体。

在事件冒泡阶段,事件源依次从target传播到defaultview。从具体到广泛,范围越来越大,像冒泡过程一样,气泡越来越大(范围越来越大)

而事件委托就是利用的DOM事件的事件捕获阶段。把具体dom上发生的事件,委托给更大范围的dom去处理。好比送信员,如果每次都把信件送给每一户,非常繁琐。但是如果交给一个大范围的管理者,比如小区的传达室,那么事情会变得非常简单。事件委托就类似这种原理,我页面中有很多按钮,如果不使用事件委托,我只能在每个按钮上注册事件。非常麻烦。但如果我把事件注册在一个大范围的div(假设所有的按钮都在这个div中),那么我只要注册一次事件,就可以处理所有按钮(只要按钮包含在上述div中)事件的响应了。




在javascript中什么是事件委托 原理是什么视频

相关评论:
  • 15369292549javascript中" javascript:;"是什么意思?
    武戚光JavaScript中的"javascript:;"是一种特殊的URL格式,用于在网站中使用JavaScript来执行特定的任务或操作。点击学习大厂名师精品课以下是一些解决方法,可以有效解决“javascript:;”带来的问题:1、使用未定义的JavaScript函数:可以将“javascript:;”替换为一个未定义的函数名称,例如“javascript:void(0);”...

  • 15369292549JavaScript中的querySelector()方法是什么,它是如何工作的?
    武戚光在JavaScript编程中,querySelector()方法扮演着关键角色,它是一个强大的Web API工具。这个方法的工作原理是,当你在document对象上调用它,并传递一个CSS选择器作为参数时,它会搜索整个HTML文档,找到与该选择器匹配的第一个元素。如果匹配成功,它返回该元素;否则,返回null。要直观理解,想象你正在...

  • 15369292549js中的function是什么意思
    武戚光在JavaScript中,function是一种用来封装可重用代码的方式。相当于一种特殊的对象,可以实现对代码的组织和封装。创建一个function后,就可以通过调用它来执行其中封装的代码,从而实现代码的重复使用。Function在JavaScript中具有许多特性。比如函数可以接收传入的参数,并在函数体内对其进行处理;函数可以返回一个...

  • 15369292549在JavaScript函数中this指向的是什么
    武戚光今天将和大家分享JavaScript中一个重要知识点this,有一定的参考价值,希望对大家学习有所帮助。对于this关键字的学习经常让我们感到困惑,搞不清楚它在函数中指代的是什么以及如何去使用它,今天将在文章中为大家详细介绍有关this的知识【推荐课程:JavaScript教程】上下文和this关键字在JavaScript中,函数有...

  • 15369292549javascript中, '??'、'?.'表示什么意思呀?具体请看看下面的图片,谢谢...
    武戚光?. 表示可选链,就是如果对象存在,就获取.后面的属性值。举个例子,假定对象obj未定义(或者说不存在),那么下面的语句会报错:let type = obj.type;而改成这样就不报错了:let type = obj?.type;当obj不存在时,变量type的值为undefined。?? 则是空值合并运算符,就是如果??左边的表达式是...

  • 15369292549在Javascript中test()的正则表达式前有两个波浪号是什么意思?
    武戚光~在js中是位操作符中的(求反) 反转操作。目的是将测试结果转换成bollen值.

  • 15369292549全面理解 JavaScript 中的 this
    武戚光JavaScript 中的 this 关键字理解 在 JavaScript 中,this 的含义是动态绑定,或称为运行期绑定。它拥有多种可能的含义,这些含义取决于函数的调用方式。初学者可能会对此感到困惑,但理解 this 的作用域和上下文可以帮助你更好地掌握语言。作用域与上下文是两个不同的概念。作用域决定了代码区块中变量和...

  • 15369292549在javascript中 setInterval()、clearInterval()、clearTimeout()等等...
    武戚光; }},1000);\/\/设置每1000毫秒(一秒钟)回调一次函数setTimeout()同理也是一种定时器,对应的结束定时的方法是clearTimeout()。与setInterval()不同的是,此定时器只执行一次,例如:var t = setTimeout(function(){ console.log("OK");},1000);\/\/一秒后在控制台输出字符串"OK"...

  • 15369292549js中的是什么意思?
    武戚光在前端开发中,javascript可谓是必不可少的一种编程语言。它不仅可以轻松地实现网页交互和动效,还可以通过jQuery、Vue、React等框架进行更加灵活和高效的开发。无论是单页面应用、多页面跳转还是数据处理等业务逻辑,都可以通过js来实现。此外,js还可以通过Node.js在服务器端进行编程开发,实现服务端的业务...

  • 15369292549javascript中object和object有什么区别
    武戚光如果该方法没有被正确重写,就可能会返回“[object Object]”,这是对象默认的字符串表示形式。现在,我们来探讨为何网页会显示“object object”以及如何解决这个问题。一种常见的情况是,在网页的JavaScript代码中,可能某处尝试将对象直接输出到HTML中,而没有将其转换为合适的字符串...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网