2011-03-28 62 views
2

我注意到,我可以從不同的按鈕/鏈接打開多個標籤。 :)如何檢查是否多個對話是jQuery的開放?

我想要做的是能夠打開只有當打開沒有其他對話框的對話框。

我可以使用一個if語句並檢查每個有附加對話框的id,但是我的頁面中有很多這樣的對象。

我需要一些表達王,if (a dialog id open) {do not open $(this) dialog}open $(this)dialog only if no other dialog is open

+0

你使用什麼對話框? jQuery的用戶界面? – amosrivera 2011-03-28 22:10:40

回答

4

您可以使用對話框上的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對象,但可以適當地重構,如果你想要的。

+0

感謝響應, 但如果我有10個對話框,我將不得不檢查.selector1和.selector2和.selector3和.selector4 ....是開放的,然後全部關閉,並打開一個我需要......? ?? – Patrioticcow 2011-03-28 22:25:33

+0

@Patrioticcow:檢查更新:) – Jon 2011-03-28 22:32:19

+0

OK,讓我們這個現實: 我有這樣的: '$( 「#EDIT1」).live( 「點擊」,函數(){ $( 「#edit_dialog1」) .dialog(「open」); \t \t \t return false; \t \t}); \t \t $( 「#EDIT2」).live( 「點擊」,函數(){ $( 「#edit_dialog2」).dialog( 「開放」); \t \t \t返回FALSE; \t \t}); \t \t $( 「#EDIT3」)。生活( 「點擊」,函數(){ $( 「#edit_dialog3」).dialog( 「開放」); \t \t \t返回FALSE; \t \t});' 現在我已經將所有這些對話框在'closeDialog()'函數中關閉。然後在'openDialog()'中調用它們? – Patrioticcow 2011-03-28 22:49:40

0

如何簡單地

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

似乎很容易做的伎倆?

只是說... :)

0

試試這個:

如果{

($( 「#對話框的保存」)的數據( 「對話」)._ ISOPEN!)。

}