javascript 傳統(tǒng)事件模型構造的事件監(jiān)聽器實現(xiàn)代碼
更新時間:2010年05月31日 20:06:25 作者:
最近做東西需要添加大量的事件,而且要對所有事件進行比較細致的控制,于是便試著寫了個事件監(jiān)聽器。
代碼如下:
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。
復制代碼 代碼如下:
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。
相關文章
Bootstrap select多選下拉框實現(xiàn)代碼
這篇文章主要為大家詳細介紹了Bootstrap select多選下拉框實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下代碼2016-12-12JavaScript數(shù)組隨機排列實現(xiàn)隨機洗牌功能
這篇文章主要介紹了JavaScript數(shù)組隨機排列實現(xiàn)隨機洗牌功能的方法,涉及javascript中基于list.sort方法實現(xiàn)數(shù)組隨機排列的技巧,可應用于隨機洗牌,非常具有實用價值,需要的朋友可以參考下2015-03-03解讀CocosCreator源碼之引擎啟動與主循環(huán)
這篇文章主要介紹了CocosCreator源碼解讀之引擎啟動與主循環(huán),對CocosCreator感興趣的同學,可以研究參考一下2021-04-04原生態(tài)js,鼠標按下后,經(jīng)過了那些單元格的簡單實例
下面小編就為大家?guī)硪黄鷳B(tài)js,鼠標按下后,經(jīng)過了那些單元格的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08JavaScript實現(xiàn)級聯(lián)菜單的方法
這篇文章主要介紹了JavaScript實現(xiàn)級聯(lián)菜單的方法,涉及javascript頁面元素操作的相關技巧,需要的朋友可以參考下2015-06-06Javascript中 帶名 匿名 箭頭函數(shù)的重要區(qū)別(推薦)
這篇文章主要介紹了Javascript中 帶名 匿名 箭頭函數(shù)的重要區(qū)別,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-01-01使用JavaScript實現(xiàn)alert的實例代碼
本文通過實例代碼給大家介紹了js實現(xiàn)alert的方法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-07-07