【问题标题】:How to check if multiple dialogs are open in Jquery?如何检查是否在 Jquery 中打开了多个对话框?
【发布时间】:2011-03-28 22:03:40
【问题描述】:

我注意到我可以从不同的按钮/链接打开多个标签。 :)

我想做的是只有在没有打开其他对话框的情况下才能打开一个对话框。

我可以使用 if 语句并检查每个附加了对话框的 id,但我的页面中有很多。

我需要if (a dialog id open) {do not open $(this) dialog}open $(this)dialog only if no other dialog is open这样的表达之王。

【问题讨论】:

  • 您使用的是什么对话框? jQuery 用户界面?

标签: jquery if-statement dialog


【解决方案1】:

您可以使用对话框上的isOpen 方法来检查它是否打开。例如:

if(!$(".selector").dialog("isOpen")) {
    // the dialog .selector is closed, you can open another one
}

更新:

如果您想在打开一个对话框之前关闭任何其他打开的对话框,您可以通过一个函数路由所有对话框打开操作,该函数会记住在打开另一个对话框之前要关闭什么。

在此示例中,调用 openDialog 将在打开您指定的对话框之前关闭任何其他打开的对话框,调用 closeDialog 将关闭当前活动的对话框。

function closeDialog() {
}

function openDialog(selector) {
    closeDialog();

    $(selector).dialog("open");
    closeDialog = function() { 
        $(selector).dialog("close");
    };
}

该示例使用closeDialogopenDialog 函数“污染”了window 对象,但您可以根据需要适当地重构它。

【讨论】:

  • 感谢您的回复,但如果我有 10 个对话框,我将不得不检查 .selector1 和 .selector2 以及 .selector3 和 .selector4 .... 是否打开,然后将它们全部关闭并打开一个我需要...???
  • 好的,让我们实际操作一下:我有这个:$( "#edit1" ).live( "click", function() { $( "#edit_dialog1" ).dialog( "open" ); return false; }); $( "#edit2" ).live( "click", function() { $( "#edit_dialog2" ).dialog( "open" ); return false; }); $( "#edit3" ).live( "click", function() { $( "#edit_dialog3" ).dialog( "open" ); return false; }); 现在我必须在closeDialog() 函数中将所有这些对话框设置为关闭。然后打电话给他们openDialog()一个??
  • @Patrioticcow:不。你只需打电话给例如openDialog("#edit_dialog1") 每当您想打开对话框时。就是这样。上一个对话框将自动关闭。
  • 好吧,但是我怎么知道打开了什么对话框,因为function closeDialog() {} 是空的?这个selector 是赋予其中一个对话框的类。
  • @Patrioticcow:只需在openDialog 中设置一个变量,并在您想检查打开哪个对话框时读取它的值。请记住将变量设置回falsecloseDialog 中的某个值。但是以后,请在问题文本中写下所有您的要求。
【解决方案2】:

简单点怎么样

if(!$('.ui-dialog').is(":visible")) {
//some stuff in here
}

似乎很容易做到这一点?

只是说... :)

【讨论】:

    【解决方案3】:

    试试这个:

    if(!$("#dialog-Save").data("dialog")._isOpen) {

    ..

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 2018-11-05
      • 1970-01-01
      • 2014-11-26
      • 2019-09-02
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多