I've used this script before and as long as I need just one overlay it works fine… https://gist.github.com/jamesotron/8fa41dd9e9ab2c78e9f0
Now I need to call it on multiple clickable elements. Each one should open a different overlay. How can I refactor it in order to pass multiple #div-second, #div-third etc. when the user clicks on #second-overlay, #third-overlay etc.?
Thank you.
var Overlay, onEndTransition, supportsTransitions, transitionEndEventName;
transitionEndEventName = function() {
var transEndEventNames;
transEndEventNames = {
WebkitTransition: "webkitTransitionEnd",
MozTransition: "transitionend",
OTransition: "oTransitionEnd",
msTransition: "MSTransitionEnd",
transition: "transitionend"
};
return transEndEventNames[Modernizr.prefixed("transition")];
};
supportsTransitions = function() {
return Modernizr.csstransitions;
};
onEndTransition = function(ev) {
if (supportsTransitions()) {
if (ev.propertyName !== "visibility") {
return;
}
this.overlay.off(transitionEndEventName(), onEndTransition);
}
return this.overlay.removeClass('close');
};
Overlay = (function() {
function Overlay(overlay) {
var closeButton;
this.overlay = overlay;
closeButton = this.overlay.find('button.overlay-close');
if (closeButton.length > 0) {
closeButton.click((function(_this) {
return function(e) {
return _this.toggle(e);
};
})(this));
}
}
Overlay.prototype.isOpen = function() {
return this.overlay.hasClass('open');
};
Overlay.prototype.close = function() {
this.overlay.removeClass('open');
this.overlay.addClass('close');
if (supportsTransitions()) {
return this.overlay.on(transitionEndEventName(), (function(_this) {
return function() {
return onEndTransition.call(_this);
};
})(this));
} else {
return onEndTransition.call(this);
}
};
Overlay.prototype.open = function() {
return this.overlay.addClass('open');
};
Overlay.prototype.toggle = function(e) {
if (this.isOpen()) {
return this.close();
} else {
return this.open();
}
};
return Overlay;
})();
$(document).ready(function() {
var overlay;
overlay = new Overlay($('div.first'));
return $('#first-overlay').click(function(e) {
return overlay.toggle(e);
});
});