zoukankan      html  css  js  c++  java
  • Js事件监听封装(支持匿名函数)

    先看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');
  • 相关阅读:
    python-Python调用wcf接口
    一个数据驱动的ui自动化框架思路
    selenium分布式部署
    UI自动化-Element is not clickable at point-----问题记录
    idea下载git代码
    windows的hosts文件路径
    端口号
    Hadoop压缩
    MongoDB(单节点)环境配置
    快排
  • 原文地址:https://www.cnblogs.com/hutuzhu/p/3463644.html
Copyright © 2011-2022 走看看