斐伊川,
我在jquery中使用对话框时遇到问题。在触发该事件的时间点会显示一个对话框,在此对话框关闭之前,可能会触发另一个事件,显示一个新的对话框。
到目前为止,我在另一个对话框打开之前显式关闭对话框,为每个id使用destroy。
if($('#'+errorId).dialog("isOpen"))
$('#'+errorId).dialog("destroy");
if($('#'+successId).dialog("isOpen"))
$('#'+successId).dialog("destroy");
我需要的是一次性关闭所有对话框而不是一次关闭所有对话框 这种解决方案是否可行?如果是,请告诉我。
先谢谢。
关心问
Phani Kumar
答案 0 :(得分:0)
一个快速的解决方案是将jQuery-Object引用存储在数组中作为全局变量。例如:
globalarray = new Array();
var jDialog = jQuery('selector').dialog({
parameters: go here
});
globalarray.push(jDialog);
使用这种方法,你可以分离表示和逻辑,你可以使用以下代码简单地迭代数组:
function destroy_all_dialogs() {
var max_length = i.length
for (var i=0; i<max_length; ++i) {
var jDialog = globalarray[i];
jDialog.dialog('destroy');
}
}
请注意,这是一个简单的解决方案。如果您想要更具体(可能只关闭特定上下文的对话框),您需要一个更复杂的对象来管理它。此外,我将所有内容分解为变量以便更好地理解每一步,但如果变量太多,您可以将一些语句组合在一起;)
如果您的触发器设置的方式始终在关闭前触发,则必须在关闭前移除触发器。您可以将其添加到destroy_all_dialogs
功能。
答案 1 :(得分:0)
在每个作为对话框打开的容器上放一个X类说'对话'
然后拨打$ ('.dialog').dialog('close')