如何在打开新的JQuery UI对话框之前关闭所有对话框?

5
我希望在打开新对话框之前关闭所有jquery对话框。
我尝试使用以下代码:
$(".ui-dialog-content").dialog("close");

它能正常工作,但新对话框太接近了。

请有人帮忙。


3
为什么不在调用新对话框的开启代码之前先调用这个语句呢?请注意,我已经尽可能地使翻译保持忠实于源文本,同时保持了清晰易懂的风格。 - JMax
在调用新窗口之前,我已经调用了它。但它也关闭了新窗口,这只是我的问题。 - w3father
你有关于对话框被打开的任何细节吗?你可以使用CSS的:not()选择器。 - StuperUser
很抱歉它可以运行,但新对话框会移到底部。 - w3father
4个回答

10

尝试:

$(".ui-dialog-content").not(<selector for the dialog you don't want to close>).dialog("close");

4
我自己也遇到了这个问题。我像这样解决它:.dialog 是一个类,所有我将其转换为对话框的元素都共享这个类。
$(".ui-dialog:visible").find(".dialog").dialog("close");

这对我来说似乎是最好的解决方案——需要不关闭非可见的jQuery对话框,因为这些可能尚未初始化(在我的情况下会导致错误)。 - Dan Nissenbaum

1

在Chris的解决方案基础上,您可以使用以下方法完成相同的操作,而无需添加自定义类:

$(".ui-dialog:visible").find(".ui-dialog-content").dialog("close");

0

你是如何打开新对话框的?你必须使用每个对话框自己的代码来打开它,例如:

$('#dialog1').dialog();
$('#dialog2').dialog();

如何逐个打开它们?

只需给它们全部一个类名class="opened-dialogs",然后在打开新对话框之前调用$('.opened-dialogs').dialog("close");即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接