Zepto事件模块源码分析
Zepto事件模块源码分析 一、保存事件数据的handlers 我们知道js原生api中要移除事件,需要传入绑定时的回调函数。而Zepto则可以不传入回调函数,直接移除对应类型的所有事件。原因就在于Zepto在绑定事件时,会把相关的数据都保存到 handlers 对象中,因此就可以在这个变量中查找对应事件的回调函数,来移除事件。 handlers 对象的数据格式如下: { 1: [ // handlers的值为DOM元素的_zid { del: function() {}, // 实现事件代理的函数 e: "click", // 事件名称 fn: function() {}, // 用户传入的回调函数 i: 0, // 该对象在数组里的下标 ns: "", // 事件的命名空间,只用使用$.fn.triggerHandler时可用,$.fn.trigger不能使用。 proxy: function(e) {}, // 真正绑定事件时的回调函数,里面判断调用del或者fn sel: undefined // 要进行事件代理时传入的selector } ] } 二、绑定事件 主要流程图 流程说明 处理参数实现函数重载 实现函数重载的重点就是判断参数的类型,处理参数: // 处理参数,实现函数重载 if (!isString(selector) && !isFunction