javascript 传统事件模型构造的事件监听器实现代码


Posted in Javascript onMay 31, 2010

代码如下:

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。
Javascript 相关文章推荐
JS中剪贴板兼容性、判断复制成功或失败
Mar 09 Javascript
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
Feb 05 Javascript
JavaScript浏览器选项卡效果
Aug 25 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
Oct 30 Javascript
往光标所在位置插入值的js代码
Sep 22 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
Apr 25 Javascript
jquery模拟进度条实现方法
Aug 03 Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 Javascript
jquery加载单文件vue组件的方法
Jun 20 jQuery
vue 自定义右键样式的实例代码
Nov 06 Javascript
JavaScript原型继承和原型链原理详解
Feb 04 Javascript
原生js实现分页效果
Sep 23 Javascript
LazyLoad 延迟加载(按需加载)
May 31 #Javascript
基于jquery的气泡提示效果
May 31 #Javascript
niceTitle 基于jquery的超链接提示插件
May 31 #Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 #Javascript
jQuery 获取对象 定位子对象
May 31 #Javascript
jQuery 获取对象 基本选择与层级
May 31 #Javascript
javascript 判断数组是否已包含了某个元素的函数
May 30 #Javascript
You might like
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
php实现webservice实例
2014/11/06 PHP
php文件缓存类汇总
2014/11/21 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
js实现抽奖功能
2020/11/24 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
浅谈Python实现2种文件复制的方法
2018/01/19 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
python 遍历pd.Series的index和value
2019/11/26 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
2014年小学安全工作总结
2014/12/04 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
导游词之清晏园
2019/11/22 职场文书
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server