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 相关文章推荐
验证用户是否修改过页面的数据的实现方法
Sep 26 Javascript
jquery 弹出层注册页面等(asp.net后台)
Jun 17 Javascript
基于jquery的Repeater实现代码
Jul 17 Javascript
读jQuery之十四 (触发事件核心方法)
Aug 23 Javascript
JS分页效果示例
Oct 11 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
Sep 27 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
Oct 12 Javascript
javascript 通过键名获取键盘的keyCode方法
Dec 31 Javascript
详解webpack编译速度提升之DllPlugin
Feb 05 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
Apr 17 Javascript
基于Vue+Webpack拆分路由文件实现管理
Nov 16 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
浅析SVN常见问题及解决方法
2013/06/21 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
基于webpack 实用配置方法总结
2017/09/28 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
原生JS实现的简单轮播图功能【适合新手】
2018/08/17 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
Python标准库之循环器(itertools)介绍
2014/11/25 Python
详解Python中的多线程编程
2015/04/09 Python
Python函数参数类型*、**的区别
2015/04/11 Python
Python实现简单登录验证
2016/04/13 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
python和php学习哪个更有发展
2020/06/17 Python
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
给女儿的表扬信
2014/01/18 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
安全目标责任书
2014/07/22 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
yolov5返回坐标的方法实例
2022/03/17 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js