首页 > JavaScript事件委托到父级元素不如委托到document?

JavaScript事件委托到父级元素不如委托到document?

看了 阮一峰 的这篇文章:

jQuery最佳实践

其中第7点,事件的委托处理(Event Delegation),这部分提到委托到父级元素不如委托到document

这是为什么?


我们项目之前就是全部委托在document上的,导致在IE6、8反应卡顿,我的原则和 @52lidan 一致,父级元素委托,不用document!


委托到document对象上,就只有document对象作为事件的监听了。
委托到父级元素,遍历就少了好多层级,效率高。
当然,页面中监听器多了也不好。

我优化的原则就是:父级元素委托,不用document。


简单的页面把事件委托到document上没有太大关系;但是如果页面复杂到DOM有十几层乃至几十层深,那么必然性能会差点。


页面中很多地方都在委托 document,那势必在回调中需要判断事件来源以调用不同相应处理方法。
我的原则是,能不用委托就不委托,需要委托就委托最近的父级元素。


通过 冒泡机制 在document监听可以减少对单个事件的监听,这种做法感觉还是看你的页面结构还有代码结构,如果你的代码是类似于mvc的结构代码块的话,如果在document上面监听的话不好进行模块划分,而且页面监听的dom节点较多较乱,那么回调事件中必然存在着各种判断去确定元素,也是存在性能消耗的。
方法大家都知道,主要还是要看特定的项目情景,而不是照搬

【热门文章】
【热门文章】