javascript 传统事件模型构造的事件监听器实现代码 |
本文标签:事件模型,事件监听器 代码如下: 复制代码 代码如下: var br={}; br.eventRouter = {}; br.eventRouter.addListen = function(el,eventType,func){ if(!el.eventObjs){ el.eventObjs = {}; } if(!el.eventObjs[eventType]){ el.eventObjs[eventType]=[]; br.eventRouter.bindListen(el,eventType); } el.eventObjs[eventType].push(func); }; br.eventRouter.removeListen = function(el,eventType,func){ if(el.eventObjs && el.eventObjs[eventType]){ for(var i=0,len=el.eventObjs[eventType].length;i<len;i++){ var item = el.eventObjs[eventType][i]; if(func==item){ el.eventObjs[eventType].splice(i,1); return true; } } } return false; }; br.eventRouter.bindListen = function(el,eventType){ if(el.eventObjs && el.eventObjs[eventType]){ el[eventType] = function(e){ for(var i=0,len=el.eventObjs[eventType].length;i<len;i++){ var f = el.eventObjs[eventType][i]; f.call(el,e); } }; } }; 代码比较简单,不做过多解释 。也希望有兴趣的同学给出bug 。 |