jQuery事件处理(四)

时间:2022-12-10 12:42:52

看了几天,决定整理一下jQuery事件处理的整体设计思路

1、通过add方法给选中的元素注册事件处理程序(通过缓存系统将事件储存到cache,而不是绑定到元素上)

  a、在存储之前,会为事件处理程序增加guid属性(jQuery里的唯一标识),

  b、先从cache中取出已经储存的以当前元素为桥梁的对象的events属性,如果没有就新建一个。

  c、再从cache中取出已经储存的以当前元素为桥梁的对象的handler属性(是一个方法),如果没有就新建一个。

  备注:cache中存储的对象有两个属性:events、handler。

2、通过dispatch方法分派事件处理函数(从缓存中读取出所有的事件处理函数,根据事件类型匹配到对应的事件处理函数)

3、分派逻辑执行之前,通过fix方法封装jQuery的event对象,并在分派逻辑中将新的event对象传入事件处理程序中

4、分派逻辑执行中,调用handler方法组装同一事件的执行队列,handler方法返回一个执行队列

5、执行事件处理函数

仍然存在的疑问:如何监听事件被触发从来开始调用dispatch进行事件处理函数分派工作的。