问答详情
源自:5-2 on()的高级用法

说一些我对委托机制的理解,欢迎提出不同的看法?

我觉得委托机制就是为了规避冒泡(子孙元素继承父元素的事件);

除了少数事件如(focus)可以规避冒泡外,其余的事件都有冒泡机制。

从开发者角度看待本节中,假设给body设置了一个事件,则他的子孙后代都能触发这个事件,若开发者的目的是指定一个元素可以触发该事件,则需要使用委托机制来规避这种冒泡行为。

并且我在测试中发现委托机制中,使用this指向的不是绑定元素的DOM对象,而是第二参数的DOM对象。

形象类比,有个老头子body开了一个公司,按照道理他的所有后代都可以调用这个公司的财务,一旦老头子body的子孙多了,会使得公司的管理变得非常混乱;所以老头子body就把公司的财务管理权限给了指定人a,现在的公司只有a能调动财务,使得财务管理变得简洁。因为a是实际的财务管理者,所以财务总监的名字就是a(this指向a的DOM对象)。

欢迎质疑,欢迎提出不同的看法,谢谢!

提问者:慕无忌4172087 2020-04-01 16:45

个回答

  • 慕无忌4172087
    2020-04-09 20:16:11

    补充下,a包含它的后代,刚刚调试过

  • 金刚无敌葫芦娃
    2020-04-08 23:43:36

    刚看了别人一个问题后有了启发

    第二参数并不是委托给它

    例如老头子body开了个公司,如果没有第二参数,那全公司所有人都可以调用财务

    如果有第二参数a,

    当a是最底层员工时,即没有子元素,那么全公司只有a可以调用财务

    当a是非底层员工时,即a有后代或子元素,那么全公司只要是a或a的后代都可以调用财务


    冒泡是从内往外冒泡,a在最里面的时候只有a可以触发事件,a如果在中间,那么从最里面一直冒泡冒到a,这些后代都可以触发

  • 金刚无敌葫芦娃
    2020-04-08 23:36:08

    还不懂这些,继续学