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面向对象设计用{}好还是function(){}好(构造函数)
Oct 23 Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
Dec 15 Javascript
javascript使用闭包模拟对象的私有属性和方法
Oct 05 Javascript
vue.js加载新的内容(实例代码)
Jun 01 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
10分钟上手vue-cli 3.0 入门介绍
Apr 04 Javascript
优雅地使用loading(推荐)
Apr 20 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
基于vue-cli3创建libs库的实现方法
Dec 04 Javascript
js实现多个标题吸顶效果
Jan 08 Javascript
javascript使用Blob对象实现的下载文件操作示例
Apr 18 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安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
简单谈谈Python流程控制语句
2016/12/04 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
Django中使用Celery的方法步骤
2020/12/07 Python
软件测试面试题
2015/10/21 面试题
环境工程专业自荐信
2014/03/03 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
部门2015年度工作总结
2015/04/29 职场文书
担保贷款承诺书
2015/04/30 职场文书
浅谈Vue的computed计算属性
2022/03/21 Vue.js
Python使用MapReduce进行简单的销售统计
2022/04/22 Python