2012-02-03 4 views
17

Ricerca di una soluzione di caso generale per determinare se una qualsiasi finestra di dialogo jQuery (ce ne sono più) è attualmente aperta. Hanno provato:Come capire se una finestra di dialogo jQuery sembra essere aperta?

$(".ui-dialog-content").dialog("isOpen") === true 
$(".ui-dialog").dialog("isOpen") == true 
$(document).dialog("isOpen") == true 
$("*").dialog('isOpen') == true 

senza alcun successo. Mi aspettavo che ".ui-dialog-content" funzionasse, dal momento che posso apparentemente chiudere qualsiasi finestra di dialogo aperta con quel selettore, ma non è così.

risposta

28

si può provare

if($(".ui-dialog").is(":visible")){ 
//dialog is open 
} 
+2

provato questo - funziona – Alnitak

+0

Qualcosa deve essere davvero strano con gli stili in questa pagina quindi. Nella console di Firebug mentre è aperta una finestra di dialogo: $ ('. Ui-dialog'). È ("visible") == false – lamont

+1

@lamont - nota i due punti di fronte a ': visible' - è uno psuedo-selector. – Alnitak

0

Verificare se viene visualizzato o meno tramite CSS? Non sono sicuro che sia l'approccio giusto, ma ho il sospetto che funzionerà.

$(".ui-dialog").css('display') != "none" 
+0

EDIT:.! In realtà $ ("ui-dialogo-content") css ('display') = "none" dà un falso positivo se la finestra è chiusa, ma fa ritorno vero quando è aperto, mentre ".ui-dialog" sembra essere sempre falso. – lamont

+0

>>> $ (". Ui-dialog-content"). Css ('display') "block" >>> $ (". Ui-dialog"). Css ('display') "none" indipendentemente dallo stato della finestra di dialogo, almeno in Firefox. – lamont

+0

sì, è stato uno scatto al buio, non ho usato l'interfaccia ui, stavo andando fuori dalle mie conoscenze generali, sembra che tu abbia trovato la tua risposta, quindi è fantastico! – thenetimp

2

jQuery UI dailog ha un metodo isOpen che restituisce true se l'dailog è aperto. Chiamalo sull'elemento che ha aperto la finestra di dialogo.

$('.ui-dialog-content').dialog("isOpen"); 

refrence: http://jqueryui.com/demos/dialog/#method-isOpen

+1

vedere la mia domanda - $ ('. Ui-dialog-content'). Dialog ("isOpen") restituisce false mentre una finestra di dialogo è aperta. – lamont

+1

provato questo - funziona solo per la prima finestra di dialogo della classe. Dovresti usare '.each()' per verificare _any_ dialog. – Alnitak

+0

Penso che avrebbe dovuto fare attenzione alla finestra di dialogo per eseguire internamente ogni ciclo. – ShankarSangoli

-1
$('html').click(function() { 
    x++; 
    if(x==2){ 
    $(".ui-dialog-titlebar-close").trigger("click"); 
    x=0; 
    } 
    }); 

Questo funziona in tutti i casi, in cui voi chiamate Dialog dal DOM.

+0

Non risponde al qtn – PapillonUK

2

Secondo la documentazione delle API, è necessario utilizzare

$(".selector").dialog("isOpen") 

per determinare se la finestra è aperta o meno. La funzione restituisce un valore booleano. Per esempio,

if($("selector").dialog("isOpen")===true){ 
    /*do stuff when dialog is open*/ 
} else { 
    /*do stuff when dialog is closed*/ 
};