$('.modal').on('show.bs.modal', function() {
var nModals = $('.modal.in').length;
$(this).attr('data-nmodals', nModals+1);
backdropStack(nModals);
});
function backdropStack(nModals) {
setTimeout(function() {
$('.modal-backdrop').each(function() {
if(!$(this).attr('data-nmodals')) {
$(this).attr('data-nmodals', nModals+1);
}
});
modalStack();
}, 100);
};
function modalStack() {
$('.modal').each(function() {
$n = $(this).data('nmodals');
$z = $(this).css('z-index');
$(this).css('z-index', $n*$z);
});
$('.modal-backdrop').each(function() {
$n = $(this).data('nmodals');
$z = $(this).css('z-index');
$(this).css('z-index', $n*$z);
});
}
Erläuterung: Jedes Mal, wenn ein modaler eröffnet, zählen wir die bestehenden Modalverben und sie Zahlen geben ihnen (Daten-nmodals Attribut) zu identifizieren. Da der Hintergrund ein paar Sekunden später erscheint, warten wir 100 Millisekunden, bevor wir diese in der backduckStack-Funktion zählen. Last but not least multipliziert die modalStack-Funktion den vorhandenen Z-Index-Wert mit der nModals-Zahl, was bedeutet, dass wir bis zu 20 Modale öffnen könnten und diese Lösung noch funktionieren würde.
Das Limit ist der maximale von CSS3 und Browser akzeptierte Z-Index. Wenn Sie zu diesem Punkt kommen ... haben Sie wahrscheinlich ein UX-Design-Problem!