慕无忌4172087
2020-04-01 16:45
我觉得委托机制就是为了规避冒泡(子孙元素继承父元素的事件);
除了少数事件如(focus)可以规避冒泡外,其余的事件都有冒泡机制。
从开发者角度看待本节中,假设给body设置了一个事件,则他的子孙后代都能触发这个事件,若开发者的目的是指定一个元素可以触发该事件,则需要使用委托机制来规避这种冒泡行为。
并且我在测试中发现委托机制中,使用this指向的不是绑定元素的DOM对象,而是第二参数的DOM对象。
形象类比,有个老头子body开了一个公司,按照道理他的所有后代都可以调用这个公司的财务,一旦老头子body的子孙多了,会使得公司的管理变得非常混乱;所以老头子body就把公司的财务管理权限给了指定人a,现在的公司只有a能调动财务,使得财务管理变得简洁。因为a是实际的财务管理者,所以财务总监的名字就是a(this指向a的DOM对象)。
欢迎质疑,欢迎提出不同的看法,谢谢!
补充下,a包含它的后代,刚刚调试过
刚看了别人一个问题后有了启发
第二参数并不是委托给它
例如老头子body开了个公司,如果没有第二参数,那全公司所有人都可以调用财务
如果有第二参数a,
当a是最底层员工时,即没有子元素,那么全公司只有a可以调用财务
当a是非底层员工时,即a有后代或子元素,那么全公司只要是a或a的后代都可以调用财务
冒泡是从内往外冒泡,a在最里面的时候只有a可以触发事件,a如果在中间,那么从最里面一直冒泡冒到a,这些后代都可以触发
还不懂这些,继续学
jQuery基础(三)—事件篇
89997 学习 · 625 问题
相似问题