封装了一个支持匿名函数的Javascript事件监听器

 更新时间:2014年06月05日 10:13:38   作者:  
这篇文章主要介绍了支持匿名函数的Javascript事件监听封装,需要的朋友可以参考下

关于js中的事件监听大家用的比较多了,无非是判断浏览器是否支持addEventListener和attachEvent,网上搜索关于事件监听的方法也挺多,但是总有些不是很完善。下面的方法中对于添加事件监听的方法是一样的,只不过在取消事件绑定上面做了点手术,现在可以支持匿名函数的使用,所以在绑定事件的时候不再需要给函数单独命名了。


主要代码:

复制代码 代码如下:

/*绑定事件与取消绑定*/
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');

相关文章

  • JS字符串和数组如何实现相互转化

    JS字符串和数组如何实现相互转化

    这篇文章主要介绍了JS字符串和数组如何实现相互转化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • JS实现简单的九宫格抽奖

    JS实现简单的九宫格抽奖

    这篇文章主要为大家详细介绍了JS实现简单的九宫格抽奖,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】

    JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】

    这篇文章主要介绍了JS图片延迟加载插件LazyImgv1.0用法,结合实例形式分析了使用图片延迟加载插件LazyImgv1.0的注意事项与核心操作技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2017-09-09
  • Javascript promise异步编程浅析

    Javascript promise异步编程浅析

    这篇文章主要介绍了Javascript promise异步编程,Promise 是异步编程的一种解决方案,可以替代传统的解决方案–回调函数和事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • JS input文本框禁用右键和复制粘贴功能的代码

    JS input文本框禁用右键和复制粘贴功能的代码

    由于项目要求,有些文本框需要禁用掉右键和复制粘贴的功能,昨天刚刚用JS实现。
    2010-04-04
  • JS计算距当前时间的时间差实例

    JS计算距当前时间的时间差实例

    下面小编就为大家分享一篇JS计算距当前时间的时间差实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • js模拟jquery的slide和fadeIn和fadeOut功能

    js模拟jquery的slide和fadeIn和fadeOut功能

    以前用过jquery的slideUp,slideDown,等许多很不错的方法,感觉很容易就能实现页面元素的动画效果!
    2010-07-07
  • JS生成随机打乱数组的方法示例

    JS生成随机打乱数组的方法示例

    这篇文章主要介绍了JS生成随机打乱数组的方法,涉及javascript数组随机排序的相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • 原生js实现回复评论功能

    原生js实现回复评论功能

    本文主要分享了原生js实现回复评论功能的示例代码。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • 详解JavaScript修改注册表的方法

    详解JavaScript修改注册表的方法

    这篇文章主要介绍了详解JavaScript修改注册表的方法,本实例主要通过WshShell 对象的相关方法实现,需要的朋友可以参考下
    2020-01-01

最新评论