js事件绑定--支持匿名函数解除绑定
2015-10-22 11:38
661 查看
废话不多说,直接上代码
绑定时用一个空对象来保存事件的回调,在IE下回调函数用 call 保证this指向当前绑定事件的DOM元素。解除绑定时判定是否已经绑定过某事件,如果是解除所有的事件处理函数
参考: Js事件监听封装(支持匿名函数)
var handlers = {}, bind = (function (){ if(window.addEventListener){ return function (el, type, callback, capture){ el.addEventListener(type, function (){ callback(); handlers[type] = handlers[type] || []; handlers[type].push(arguments.callee); }, !!capture); } }else if(window.attachEvent){ return function (el, type, callback){ el.attachEvent('on'+type, function (){ callback.call(el); handlers[type] = handlers[type] || []; handlers[type].push(arguments.callee); }); } }else{ return function (el, type, callback){ el.on+'type' = callback; } } }(window)), unbind = (function (){ if(window.addEventListener){ return function (el, type){ if(handlers[type]){ var i=0, len = handlers[type].length; for (; i<len; i++) { el.removeEventListener(type, handlers[type][i]); }; } } }else if(window.attachEvent){ return function (el, type){ if(handlers[type]){ var i=0, len = handlers[type].length; for(; i<len; i++){ el.detachEvent('on'+type, handlers[type][i]); } } } }else{ return function (el, type){ el.on+'type' = null; } } }(window));
绑定时用一个空对象来保存事件的回调,在IE下回调函数用 call 保证this指向当前绑定事件的DOM元素。解除绑定时判定是否已经绑定过某事件,如果是解除所有的事件处理函数
参考: Js事件监听封装(支持匿名函数)
相关文章推荐
- OC中的JSON解析【简单】
- Extjs之XTemplate简单应用
- Ajax获取SSH框架下JSON对象
- JS+CSS实现的竖向简洁折叠菜单效果代码
- js刷新页面
- jsp文件上传原理
- JSP文件下载(不使用jar包)
- WebApi返回Xml和返回json处理方法
- a标签中调用js的几种方法
- JS实现不使用图片仿Windows右键菜单效果代码
- 验证码的读秒数-js
- JS实现新浪博客左侧的Blog管理菜单效果代码
- JS实现判断滚动条滚到页面底部并执行事件的方法
- js基础 - 兼容代码
- Layer.date 时间插件 JS日期时间插件
- json rpc
- javascript中this实例及理解
- 【JavaScript】利用滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
- JS设置cookie
- jsp-jsp中EL表达式无效