使用过
jQuery
的同学,应该对事件绑定方法.on()
.off()
有一定的了解。 在个人类库jTool 中实现了这两个方法,这里就来细说下原生实现方式。
实现方式
以下为个人类库jTool 中 Event 实现方式。
代码中使用到一个基础方法对象utilities ,该对象为jTool 的基础类。 如果想了解更多,可以通过点击进入查看原码。
一个空壳子
首先通过一个空架子来了解下实现逻辑,核心实现在getEventObject() 方法内的包装函数
var Event = {
// 绑定
on: function(event, querySelector, callback, useCapture){
return this.addEvent(this.getEventObject(event, querySelector, callback, useCapture));
},
// 解除绑定
off: function(event, querySelector) {
return this.removeEvent(this.getEventObject(event, querySelector));
},
// 获取 jTool Event 对象
getEventObject: function (event, querySelector, callback, useCapture){
// 事件代理实现核心
// 注意: 这个方法为包装函数,此处的this为触发事件的Element
var fn = callback;
callback = function(e){
// 验证子选择器所匹配的nodeList中是否包含当前