我有多个 jQuery UI 对话框,我想一个接一个地显示(一个关闭,下一个打开)。目前,它们都显示模态,但后面的一个更大,在我看来它看起来很糟糕/令人困惑。
我通常会打开下一个对话框的关闭功能,但是这些对话框是从单独的功能中调用的,并且它们是动态的,因为并非所有对话框都始终根据某些标准显示。
我正在考虑一种使用方式$.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' 方法。
感谢您的任何意见。