昨天讲过了事件冒泡,其实事件代理和事件委托就是来源于事件冒泡机制。经常写js的人应该都知道这个方法。一个交互丰富的网页,离不开各种复杂的事件,事件太多就会造成网页性能下降,有内存泄漏的风险。这个时候事件委托和事件代理就起大作用了,使对象不被直接触发,避免内存泄漏和网页性能下降的风险。
那究竟什么是事件委托呢?
事件委托就是:当网页中需要触发事件的对象比较多的时候,为了避免内存泄漏,我们把事件委托到其父对象上,借助事件冒泡机制,可以将事件委托到body,document等元素上,这样等于一个页面就只有一个事件触发,避免直接把事件添加到多个对象上。
曾经做过一个项目,是一个云存储服务的网站,有一个文件列表页,每条列表上面有删除、复制、移动,重命名等事件触发按钮。当列表的条数超过一定数量的时候,比如超过2000条,点击任何一个按钮浏览器都会非常卡,这个时候事件委托就起大作用了。
还有一个使用场景,就是js动态添加的元素,直接添加事件是无法获取到对象的,事件不会生效。这个时候就需要将事件委托到其父对象上方能生效。jquery的delegate,on等都是为事件委托提供的方式。
页面的事件建议可以都委托到document上,可以防止内存泄漏,当然网页的性能并非就依靠事件委托就能搞定的,还有其他很多的渠道需要去注意。
好了,今天就讲这么多了,有机会我会讲事件委托的相关内容视屏演示给大家的。
下周二即将为大家推出第二堂视频分享课程,敬请期待。
网友评论