Skip to content

Instantly share code, notes, and snippets.

@chrisdrackett
Created February 20, 2009 19:32
Show Gist options
  • Save chrisdrackett/67649 to your computer and use it in GitHub Desktop.
Save chrisdrackett/67649 to your computer and use it in GitHub Desktop.
(function(){
var events;
var check = function(e){
var target = $(e.target);
var parents = target.getParents();
events.each(function(item){
var element = item.element;
if (element != target && !parents.contains(element))
item.fn.call(element, e);
});
};
Element.Events.outerClick = {
onAdd: function(fn){
if(!events) {
document.addEvent('click', check);
events = [];
}
events.push({element: this, fn: fn});
},
onRemove: function(fn){
events = events.filter(function(item){
return item.element != this || item.fn != fn;
}, this);
if (!events.length) {
document.removeEvent('click', check);
events = null;
}
}
};
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment