Skip to content

Instantly share code, notes, and snippets.

@adeel
Created January 7, 2012 20:49
Show Gist options
  • Save adeel/1575997 to your computer and use it in GitHub Desktop.
Save adeel/1575997 to your computer and use it in GitHub Desktop.
var fun = (function() {
var self = {};
self.element = (function() {
var self = {};
self.events = (function() {
// Based on http://dean.edwards.name/my/events.js.
var self = {};
function fix(event) {
event.preventDefault = function() {
this.returnValue = false;
}
event.stopPropagation = function() {
this.cancelBubble = true;
}
return event;
}
function handle(event) {
event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
var ret = true;
for (var i in this.events[event.type]) {
this.$$handle_event = handlers[i];
if (this.$$handle_event(event) === false) {
ret = false;
}
}
return ret;
}
self.add = function(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else {
if (!handler.$$guid) {
handler.$$guid = self.add.guid++;
}
if (!element.events) {
element.events = {};
}
var handlers = element.events[type];
if (!handlers) {
handlers = element.events[type] = {};
if (element["on" + type]) {
handlers[0] = element["on" + type];
}
}
handlers[handler.$$guid] = handler;
element["on" + type] = handle;
}
}
self.add.guid = 1;
self.remove = function(element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else {
if (element.events && element.events[type]) {
delete element.events[type][handler.$$guid];
}
}
}
return self;
})();
return self;
})();
return self;
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment