|
最近做东西需要添加大量的事件,而且要对所有事件进行比较细致的控制,于是便试着写了个事件监听器。
代码如下: 复制代码 代码如下: 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。 |
|