次々に表示したい jQuery UI ダイアログが複数あります (1 つが閉じ、次の行が開きます)。現在、それらはすべてモーダルで表示されていますが、後ろの 1 つが大きく、見栄えが悪い/わかりにくいと思います。
通常は、あるダイアログの閉じる関数で次のダイアログを開くようにしますが、これらのダイアログは別の関数から呼び出され、特定の基準に基づいてすべてのダイアログが常に表示されるわけではないという意味で動的です。
を使用する方法を考えています$.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
オブジェクトへの参照を返させることができるかもしれませんが、メインの実行部分 (条件がチェックされ、関数が呼び出される場所) からチェーンを実装する方法がわかりません。
また、ダイアログが閉じられる前に、どのようにダイアログが閉じられても、次のダイアログに連鎖することを確認したいと思います。X、「close」メソッド、または「destroy」メソッドのいずれかによって。
ご意見ありがとうございます。