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 相关文章推荐
javascript网页关闭时提醒效果脚本
Oct 22 Javascript
Jquery的hover方法让鼠标经过li时背景变色
Sep 06 Javascript
WEB前端设计师常用工具集锦
Dec 09 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
Mar 23 Javascript
JS简单实现城市二级联动选择插件的方法
Aug 19 Javascript
javascript创建对象的3种方法
Nov 02 Javascript
jQuery 实现双击编辑表格功能
Jun 19 jQuery
JS实现数组去重方法总结(六种方法)
Jul 14 Javascript
详解Node.JS模块 process
Aug 31 Javascript
Openlayers实现地图的基本操作
Sep 28 Javascript
解决vue-loader加载不上的问题
Oct 21 Javascript
关于Vue中的options选项
Mar 22 Vue.js
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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
12条写出高质量JS代码的方法
2018/01/07 Javascript
vue里面使用mui的弹出日期选择插件实例
2018/09/16 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
python字典DICT类型合并详解
2017/08/17 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
总务岗位职责
2013/11/19 职场文书
八一慰问活动方案
2014/02/07 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
小学班主任培训方案
2014/06/04 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
家长会主持词开场白
2015/05/29 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers