您现在的位置:首页 --> JavaScript --> Js事件监听封装(支持匿名函数)
Js事件监听封装(支持匿名函数)
浏览:3578次 出处信息
关于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头工具介绍 (阅读:6214)
- jQuery事件编写进阶 (阅读:3375)
- jQuery事件的冒泡过程 (阅读:2917)
- js中鼠标滚轮事件详解 (阅读:2449)
- 关于Javascript的俩个有趣的探讨 (阅读:2315)
- 在 JavaScript 中监听 IME 键盘输入事件 (阅读:2362)
- javascript事件:获取事件对象getEvent函数 (阅读:2224)
- 提高短连接监听性能方法测试 (阅读:2227)
- 基于事件的社会化网站 (阅读:1878)
- 社会化媒体:监听和衡量 (阅读:1963)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:了解模块化开发
文章信息
- 作者:痞子 来源: 牛魔王的世界观
- 标签: 事件 监听
- 发布时间:2013-06-18 13:57:30
建议继续学习
近3天十大热文
- [68] Go Reflect 性能
- [68] 如何拿下简短的域名
- [67] Oracle MTS模式下 进程地址与会话信
- [62] IOS安全–浅谈关于IOS加固的几种方法
- [61] 图书馆的世界纪录
- [60] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [48] 读书笔记-壹百度:百度十年千倍的29条法则