У меня есть несколько диалоговых окон JQuery UI, которые я хотел бы показывать один за другим (один закрывается, следующий в строке открывается). В настоящее время все они отображаются модально, но один из них больше, и, на мой взгляд, он выглядит плохо/запутанным.Откройте диалоговые окна JQuery UI One After Another
Обычно у меня есть тесные функции одного диалога, открываются следующие, но эти диалоги вызывают из отдельных функций, и они являются динамическими в том смысле, что не все из них всегда отображаются на основе определенных критериев.
Я созерцаю способ использования $.Deferred
, но не уверен, что это будет работать, поскольку я понимаю, что он работает больше для таких вещей, как звонки AJAX.
Вот (чрезвычайно) упрощенный пример того, как код может быть структурирован как есть.
<script>
function displayAlert1(){
$('<div/>', {text: 'Alert 1!'}).dialog({
modal: true,
autoOpen: true,
width: 400,
buttons: { OK: function(event, ui){ $(this).dialog('close'); } }
});
}
function displayAlert2(){
$('<div />', {text: 'Alert 2!'}).dialog({
modal: true,
autoOpen: true,
width: 200,
buttons: { OK: function(event, ui){ $(this).dialog('close'); } }
});
}
$(function(){
// These are actually met from data passed by AJAX
var condition1 = true;
var condition2 = true;
$('a').live('click', function(event, ui){
if(condition1) displayAlert1();
if(condition2) displayAlert2();
}
});
</script>
<!-- The links are actually dynamically produced from AJAX, thus the live() event handler -->
<a>Click Me!</a>
Мое мышление может быть, я могу иметь каждое предупреждение функции возвращает ссылку на элемент диалогового окна, или $.Deferred
объекта, но я не уверен, как реализовать цепочки от основного исполнения части (где проверяются условия и вызываются функции).
Я также хотел бы убедиться, что он соединяется с следующим диалоговым окном независимо от того, как диалог перед его закрытием; либо по методу «закрыть», либо по методу «уничтожить».
Благодарим вас за вход.
Я на самом деле придумал более эффективный метод, но ваш ответ действительно привела меня к мысли о ней.Я придумал использовать сложную очередь и подключил ее к событию закрытия динамически, так как я подробно расскажу в ответе ниже. – Demonslay335