一个通用的事件监听函数,能支持匿名函数的使用
2017-05-25 21:35
447 查看
var handleHash = {}; var bind = (function () { if (window.addEventListener){ return function (e1, type, fn, capture) { e1.addEventListener(type,function () { fn(); handleHash[type] = handleHash[type]||[]; handleHash[type].push(arguments.callee); },capture); } }else if (window.attachEvent){ return function (e1, type, fn, capture) { e1.attachEvent("on"+type,function () { fn(); handleHash[type] = handleHash[type]||[]; handleHash[type].push(arguments.callee); }) } } })(); var unbind = (function () { if (window.addEventListener){ return function (e1, type) { if(handleHash[type]){ var i=0,len=handleHash[type].length; for (i;i<len;i++){ e1.removeEventListener(type,handleHash[type][i]); } } }; }else if (window.attachEvent){ return function (e1, type) { if(handleHash[type]){ var i=0,len=handleHash[type].length; for (i;i<len;i++){ e1.detachEvent(type,handleHash[type][i]); } } }; } })();
解析:
handleHash用作哈希表来存储事件的function,handleHash【type】来存储多个事件监听的方法,当需要移除哪个事件,遍历handleHash【type】的数组,删除事件。
相关文章推荐
- 写一个通用的事件监听函数
- 一个通用的事件监听函数
- 一个通用的事件监听函数(转自寒冬winter大神的博客)
- 编写一个通用的事件监听函数
- Qt使用一个事件队列对所有发出的事件进行维护(QObject的event()函数相当于dispatch函数),用EventLabel 继承QLabel作为例子(简单明了) good
- 一个通用的事件监听器函数
- 【Java】使用JFrame监听事件创建一个复制文本功能的窗体程序与按钮快捷键
- Android 小项目之---- 计算器 使用同一个事件监听完成 加减乘
- JavaScript中绑定事件监听函数的通用方法[ addEvent() ]
- 事件监听函数,跨浏览器使用
- JS通用事件监听函数
- jQuery-使用hover(fn,fn)函数监听mouseover和mouseout两个事件
- 一个项目中使用到的通用函数库(5) 汉字相关操作
- JavaScript中绑定事件监听函数的通用方法[ addEvent() ]
- Android 小项目之---- 计算器 使用同一个事件监听完成 加减乘
- 一个项目中使用到的通用函数库(4) 客户端信息相关
- JavaScript中绑定事件监听函数的通用方法[ addEvent() ]
- 还是继续支持标准开发,再送一个页面加入FLASH的通用函数
- 封装了一个支持匿名函数的Javascript事件监听器
- 使用MutationObserver对象封装一个监听DOM生成的函数