首页  >  问答  >  正文

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

看了 阮一峰 的这篇文章:

jQuery最佳实践

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

这是为什么?

天蓬老师天蓬老师2750 天前470

全部回复(5)我来回复

  • PHPz

    PHPz2017-04-10 14:41:26

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

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

    回复
    0
  • 阿神

    阿神2017-04-10 14:41:26

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

    回复
    0
  • 怪我咯

    怪我咯2017-04-10 14:41:26

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 14:41:26

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

    回复
    0
  • 黄舟

    黄舟2017-04-10 14:41:26

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

    回复
    0
  • 取消回复