国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

封裝了一個支持匿名函數的Javascript事件監聽器

2019-11-20 14:54:40
字體:
來源:轉載
供稿:網友

關于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');

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻栗坡县| 博客| 古交市| 雷波县| 乌兰察布市| 铁岭市| 满城县| 乐都县| 疏附县| 石景山区| 无极县| 炎陵县| 葫芦岛市| 花莲县| 平远县| 绵阳市| 清河县| 桐乡市| 三门峡市| 仙桃市| 新龙县| 张家界市| 湘乡市| 荃湾区| 彝良县| 怀集县| 阳泉市| 通化市| 增城市| 马龙县| 阳城县| 赣榆县| 安化县| 安陆市| 武隆县| 饶平县| 扶余县| 云林县| 保靖县| 环江| 禄劝|