zoukankan      html  css  js  c++  java
  • 监听自定义事件

    window.CusEventTarget = function () {
        this._listener = {};
    };
    
    CusEventTarget.prototype = {
        constructor: this,
        addEvent: function (type, fn) {
            if (typeof type === "string" && typeof fn === "function") {
                if (typeof this._listener[type] === "undefined") {
                    this._listener[type] = [fn];
                } else {
                    this._listener[type].push(fn);
                }
            }
            return this;
        },
        addEvents: function (obj) {
            obj = typeof obj === "object" ? obj : {};
            var type;
            for (type in obj) {
                if (type && typeof obj[type] === "function") {
                    this.addEvent(type, obj[type]);
                }
            }
            return this;
        },
        addMutipleEvents: function (types, fn) {
            types = types instanceof Array ? types : [];
            var type;
            for (var i in types) {
                type = types[i]
                this.addEvent(type, fn);
            }
            return this;
        },
        fireEvent: function (type,data) {
            if (type && this._listener[type]) {
                var events = {
                    type: type,
                    target: this
                };
    
                for (var length = this._listener[type].length, start = 0; start < length; start += 1) {
                    this._listener[type][start].call(this,data, events);
                }
            }
            return this;
        },
        fireEvents: function (array) {
            if (array instanceof Array) {
                for (var i = 0, length = array.length; i < length; i += 1) {
                    this.fireEvent(array[i]);
                }
            }
            return this;
        },
        removeEvent: function (type, key) {
            var listeners = this._listener[type];
            if (listeners instanceof Array) {
                if (typeof key === "function") {
                    for (var i = 0, length = listeners.length; i < length; i += 1) {
                        if (listeners[i] === listener) {
                            listeners.splice(i, 1);
                            break;
                        }
                    }
                } else if (key instanceof Array) {
                    for (var lis = 0, lenkey = key.length; lis < lenkey; lis += 1) {
                        this.removeEvent(type, key[lenkey]);
                    }
                } else {
                    delete this._listener[type];
                }
            }
            return this;
        },
        removeEvents: function (params) {
            if (params instanceof Array) {
                for (var i = 0, length = params.length; i < length; i += 1) {
                    this.removeEvent(params[i]);
                }
            } else if (typeof params === "object") {
                for (var type in params) {
                    this.removeEvent(type, params[type]);
                }
            }
            return this;
        }
    };
    

      

  • 相关阅读:
    Linux 文件误删 恢复
    RSS源 集合
    查询android系统数据库 自定义sql语句 办法
    Android通讯录数据库介绍与基本操作(增删改查)
    Android 监听短信 两种方式
    获取系统设置好的闹钟时间
    颜色 16进制对照表
    仿IPhone 长按图标删除应用,图标抖动效果
    配置文件的加载顺序和位置
    php7 使用dom动态生成xml文档
  • 原文地址:https://www.cnblogs.com/holy-amy/p/9304976.html
Copyright © 2011-2022 走看看