2010-07-22 32 views

回答

156

如果你讀了docs.

$('#mydialog').dialog('isOpen') 

此方法返回布爾值(true或false),而不是jQuery對象。

+0

Doh!我不知道我是如何忽視這一點的。謝謝。 – user208662 2010-07-22 23:11:10

+1

你會如何做任何和所有對話的測試?假設你有十個不同的對話框,它們有單獨的inits和options,你想測試它們中的任何一個是否打開,而不是特定的選擇器? – 2014-11-12 21:56:24

+0

將一個類添加到所述對話框中,然後更改isOpen檢查中的選擇器。 – Suipaste 2015-08-19 15:41:31

19

如果你想檢查對話框的特定元素上打開,你可以這樣做:

if ($('#elem').closest('.ui-dialog').is(':visible')) { 
    // do something 
} 

或者,如果你只是想檢查元素本身是可見的,你可以這樣做:

if ($('#elem').is(':visible')) { 
    // do something 
} 

或者......

if ($('#elem:visible').length) { 
    // do something 
} 
+3

我檢查我的div,如果它沒有初始化,像這樣: t')' – Sergey 2015-06-02 06:00:55

+0

謝謝,我無法使用「isOpen」爲我工作得到上面的答案,但這工作。 – 2016-01-15 19:58:24

47

其實,你必須明確地將它與真實的比較。如果對話框還不存在,它不會返回false(如你所期望的),它將返回一個DOM對象。

if ($('#mydialog').dialog('isOpen') === true) { 
    // true 
} else { 
    // false 
} 
+4

在最新的JQuery中返回false。 – hoyhoy 2012-04-20 21:48:10

+1

你會如何爲任何和所有對話做這個測試?假設你有十個不同的對話框,它們有單獨的inits和options,你想測試它們中的任何一個是否打開,而不是特定的選擇器? – 2014-11-12 21:56:47

+2

也許創建一個像$(「。ui-dialog」)這樣的函數。each(function(/ * check this dialog * /))? – marcovtwout 2014-11-13 08:41:53

0

尼克Craver的評論是最簡單的,以避免如果對話框尚未定義時出現的錯誤:

if ($('#elem').is(':visible')) { 
    // do something 
} 

你應該設置可見在你的CSS第一雖然,使用:

#elem { display: none; }