JSFiddle - React, Tailwind, and code Playground
by Oski Krawczyk
JavaScript
// Extend Events with "outerClick" event
(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;
}
}
};
})();