Skip to content

Instantly share code, notes, and snippets.

@jblanche
Forked from anonymous/eventable.js
Created June 27, 2012 14:47

Revisions

  1. jblanche revised this gist Jun 27, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion eventable.js
    Original file line number Diff line number Diff line change
    @@ -20,7 +20,7 @@ var Eventable =
    if (event.target == null)
    event.target = this;

    var list = this.eventMap[event];
    var list = this.eventMap[event.type];
    if (list != null)
    {
    var length = list.length;
  2. @invalid-email-address Anonymous created this gist Jun 20, 2012.
    78 changes: 78 additions & 0 deletions eventable.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,78 @@
    var Eventable =
    {
    addEventListener: function(type, listener)
    {
    if (this.eventMap == null)
    this.eventMap = {};
    var list = this.eventMap[type];
    if (list == null)
    {
    list = [];
    this.eventMap[type] = list;
    }
    list.push(listener);
    },

    dispatchEvent: function(event)
    {
    if (this.eventMap == null)
    return false;
    if (event.target == null)
    event.target = this;

    var list = this.eventMap[event];
    if (list != null)
    {
    var length = list.length;
    for (var i=0; i<length; i++)
    {
    var listener = list[i];
    if (listener != null)
    {
    var res = listener(event);
    if (res === false) return;
    }
    }
    return true;
    }
    return false;
    },

    hasEventListener: function(type)
    {
    if (this.eventMap == null)
    return false;
    var h = this.eventMap[type];
    return (h == null) ? false : (h.length > 0);
    },

    removeEventListener: function(type, listener)
    {
    if (this.eventMap == null)
    return;

    var list = this.eventMap[type];
    if (isNullOrEmpty(list)) return;
    var length = list.length;
    for (var i=0; i<length; i++)
    {
    if (list[i] === listener)
    {
    list.splice(i, 1);
    return;
    }
    }
    },

    removeAllListeners: function()
    {
    this.eventMap = null;
    },

    willTrigger: function(type)
    {
    if (this.eventMap == null)
    return false;
    return this.eventMap[type] != null;
    }
    };