您现在的位置:首页 --> JavaScript --> Js事件监听封装(支持匿名函数)
Js事件监听封装(支持匿名函数)
浏览:3408次 出处信息
关于js中的事件监听大家用的比较多了,无非是判断浏览器是否支持addEventListener和attachEvent,网上搜索关于事件监听的方法也挺多,但是总有些不是很完善。下面的方法中对于添加事件监听的方法是一样的,只不过在取消事件绑定上面做了点手术,现在可以支持匿名函数的使用,所以在绑定事件的时候不再需要给函数单独命名了。
先看demo:http://liutian1937.github.io/demo/EventListen.html
主要代码:
/*绑定事件与取消绑定*/ var handleHash = {}; var bind = (function() { if (window.addEventListener) { return function(el, type, fn, capture) { el.addEventListener(type, function(){ fn(); handleHash[type] = handleHash[type] || []; handleHash[type].push(arguments.callee); }, capture); }; } else if (window.attachEvent) { return function(el, type, fn, capture) { el.attachEvent("on" + type, function(){ fn(); handleHash[type] = handleHash[type] || []; handleHash[type].push(arguments.callee); }); }; } })(); var unbind = (function(){ if (window.addEventListener) { return function(el, type ) { if(handleHash[type]){ var i = 0, len = handleHash[type].length; for (i; i<len ; i += 1){ el.removeEventListener(type, handleHash[type][i]); } }; }; } else if (window.attachEvent) { return function(el, type) { if(handleHash[type]){ var i = 0, len = handleHash[type].length; for (i; i<len ; i += 1){ el.detachEvent("on" + type, handleHash[type][i]); } }; }; } })();
原理解析:
handleHash做哈希表缓存事件的function,handleHash['事件名称']是一个数组,来添加多个事件监听的方法,unbind哪个事件的时候遍历handleHash['事件名称']的数组,然后移除。
使用:
bind(obj,'click',function(){ alert ('click'); }); unbind(obj,'click');
建议继续学习:
- 各种浏览器审查、监听http头工具介绍 (阅读:5987)
- jQuery事件编写进阶 (阅读:3247)
- jQuery事件的冒泡过程 (阅读:2860)
- js中鼠标滚轮事件详解 (阅读:2394)
- 在 JavaScript 中监听 IME 键盘输入事件 (阅读:2255)
- 关于Javascript的俩个有趣的探讨 (阅读:2249)
- 提高短连接监听性能方法测试 (阅读:2176)
- javascript事件:获取事件对象getEvent函数 (阅读:2139)
- 基于事件的社会化网站 (阅读:1803)
- 一种生成事件脉络的方法 (阅读:1734)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:了解模块化开发
文章信息
- 作者:痞子 来源: 牛魔王的世界观
- 标签: 事件 监听
- 发布时间:2013-06-18 13:57:30
建议继续学习
近3天十大热文
- [11] 解决 ubuntu 的 /etc/hosts
- [9] 文言文白话文互转:文言文转白话文(现代文),
- [8] 用邻接表实现无向图
- [7] 海量数据面试题举例
- [7] Http/2知识图谱
- [7] 领导需要比下属更懂技术吗?
- [6] 聚类算法之ISODATA
- [6] JVM内存结构
- [6] 说说lighttpd的fastcgi
- [6] 查看 Apache并发请求数及其TCP连接状