jQuery源码 - 事件处理 - 整体架构
<pre name="code" class="javascript">// 事件管理的工具函数 jQuery.event = { global: {}, // 绑定事件函数 add: function() {}, // 移除事件函数 remove: function() {}, // 主动触发事件函数 trigger: function() {}, // 事件分发函数 dispatch: function() {}, // 修复jQuery.Event对象的函数 fix: function() {}, // 包含一些事件常用属性,让KeyEvent和MouseEvent共享 // 新建JQ事件对象的时候,这些属性就会被扩展进去 props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), // fix的勾子,应该是提供自定义勾子使用的,如果不存在的话,fix方法里面会使用keyHooks跟mouseHooks fixHooks: {}, // 键盘事件勾子 keyHooks: {}, // 鼠标事件勾子 mouseHooks: {}, // 特殊事件类型的一些属性跟方法,这些属性跟方法均在前面的jQuery.event中被使用到,应该可以看做是跟勾子类似的对象 special: {}, // simulate这个方法暂时也是不理解其用途 // 貌似是模仿一些具体类型的事件,然后触发 simulate: function() {} }; // 删除事件监听,在jQuery.event.remove里会用到 jQuery.removeEvent = function() {}; </pre>
author:Lik
Endeavoring to powerless, struggling to move yourself.
Endeavoring to powerless, struggling to move yourself.