销毁多个对话框

时间:2011-01-18 07:20:58

标签: jquery dialog

斐伊川,
我在jquery中使用对话框时遇到问题。在触发该事件的时间点会显示一个对话框,在此对话框关闭之前,可能会触发另一个事件,显示一个新的对话框。

到目前为止,我在另一个对话框打开之前显式关闭对话框,为每个id使用destroy。

   if($('#'+errorId).dialog("isOpen"))
                $('#'+errorId).dialog("destroy");
if($('#'+successId).dialog("isOpen"))
            $('#'+successId).dialog("destroy");

我需要的是一次性关闭所有对话框而不是一次关闭所有对话框 这种解决方案是否可行?如果是,请告诉我。

先谢谢。

关心问 Phani Kumar

2 个答案:

答案 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')