美文网首页
事件委托(事件代理)

事件委托(事件代理)

作者: lsh1992 | 来源:发表于2020-02-17 19:28 被阅读0次

事件委托还有一个名字叫事件代理,JS高程上讲:事件委托就是利用事件冒泡,只制定一个事件处理程序,就可以管理某一类型的所有事件。

为什么要用事件委托

在JS中添加事件会先获取到dom节点再进行添加,获取dom的次数越多,引起浏览器重绘与重排的次数也就越多,就会延长整个页面的交互时间,这就是为什么减少DOM操作能提升网页的性能。而且每个事件处理函数都会占用内存,事件处理函数越多,内存占用就越大。

如果使用事件委托,就只会对事件委托的这一个dom进行操作,与dom只需要交互一次,这样就能大大的减少与dom的交互次数,提高性能;

事件委托的原理

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

判断目标节点

以上面节点树div>ul>li>a为例,假如在最外面的div添加了点击事件,但是div里面有多个a标签。比如:<a id="a1"></a>、<a id="a2"></a>,当我们点击不同的a标签时,需要执行不一样的操作,那么我们应该怎么去做呢?

Event对象提供了一个属性叫target(IE:srcElement),该事件属性可以返回事件的目标节点(触发该事件的节点)。虽然不是真实的dom,但是target和普通节点一样都能获取节点的属性,以上面问题为例,我们可以通过判断target.id的值,来区别触发当前事件的节点,针对不同的节点执行不一样的操作。这样就达到和每一个节点都绑定一个事件同样的效果,且每次只执行一次dom操作。

相关文章

  • 概念

    事件委托,事件代理 事件代理又称之为事件委托。是JavaScript中常用绑定事件的常用技巧。顾名思义,“事件代理...

  • 前端常见面试题(十一)@郝晨光

    什么是事件委托?为什么要用事件委托? 什么是事件委托? 事件委托,又称事件代理,就是将元素的事件处理交由父元素或者...

  • 事件委托

    事件委托 什么是事件委托(事件代理): 事件委托就是利用事件冒泡的原理,将事件注册到父元素上,减少子元素的事件注册...

  • 事件委托(事件代理)

    利用事件的冒泡传播机制(触发当前元素的某个行为,它父级所有的相关行为都会被触发),如果一个容器中很多元素需要绑定事...

  • 事件委托(事件代理)

    链接地址:http://www.cnblogs.com/liugang-vip/p/5616484.htmlhtt...

  • 事件代理/事件委托

    利用事件冒泡机制,通过设置一个事件处理程序,来管理某一类型的所有事件。(例如:取快递、ul-li操作) 1. 取快...

  • 事件委托/事件代理

    什么是事件委托/事件代理?利用事件的冒泡传播机制(触发当前元素的某一个行为,它父级所有元素相关行为都会被触发),如...

  • 事件代理(事件委托)

    事件流 事件从页面中接收事件的顺序 事件捕获 从window对象传到目标节点(上层到下层),成为捕获阶段 事件冒泡...

  • 事件委托(事件代理)

    概念 两者指的是同一件事情,只是角度不同,比如,一个A元素把事件交给父级元素B处理,那么A就是委托方,B就是代理放...

  • 事件委托(事件代理)

    事件委托原理:事件冒泡机制 优点: 1.大量减少内存占用,减少事件注册。 2.新增元素实现动态绑定事件 实现方式:...

网友评论

      本文标题:事件委托(事件代理)

      本文链接:https://www.haomeiwen.com/subject/naokfhtx.html