zoukankan      html  css  js  c++  java
  • 事件绑定(1)

    对于非IE浏览器来说,利用现代事件绑定非常方便,但是对于IE浏览器,它自身提供了专门的现代事件绑定方法,但是IE的现代事件绑定方法问题多多,而且还会导致内存泄露,所以本篇文章就是利用传统事件绑定来模拟W3C的现代事件绑定方法。直接开代码,注释非常清楚:

     1 function addEvent(obj, type, fn) {
     2     if (typeof window.addEventListener != 'undefined') {
     3         obj.addEventListener(type, fn, false);
     4     } else {
     5         //定义一个哈希表来存放事件对象
     6         obj.events = obj.events || {};
     7             
     8         //将事件函数存放在事件对象的数组中
     9         if (!obj.events[type]) {
    10             obj.events[type] = [];
    11             //将第一个事件函数存放在事件对象数组中的第一个位置上
    12             if (obj['on' + type]) obj.events[type][0] = fn;
    13         }
    14         //将后面的事件函数依次存放在事件对象数组中的其他位置
    15         obj.events[type][addEvent.ID++] = fn;
    16         //执行事件函数
    17         obj['on' + type] = function () {
    18             for (var i in obj.events[type]) {
    19                 obj.events[type][i]();
    20             }
    21         };
    22     }
    23 }
    24 //为每个事件分配一个计数器
    25 addEvent.ID = 1;
  • 相关阅读:
    Vue对象提供的属性功能
    Vue快速入门
    Django-DRF(路由与扩展功能)
    Django-DRF(视图相关)
    Django-DRF(1)
    Django-Xadmin
    python 列表的append()和extend()
    map apply applymap
    pd.merge(), pd.concat()
    描述性分析与数据清洗 笔记
  • 原文地址:https://www.cnblogs.com/fengyuqing/p/javascript_addEvent_1.html
Copyright © 2011-2022 走看看