2015-04-09 10 views
5

Mam następujący kod, aby wykryć, czy dialogowe jquery ui jest otwarty:Jak mogę sprawdzić, czy zapytanie dialogowe jquery ui zostało zainicjowane?

if ($("#dialog-myDialog").dialog("isOpen")) { 
     return; 
} 

który działa dobrze, ale uważam, że sytuacja, w której ten kod sprawdzony przed oknie inicjowany w pierwszej kolejności i to, czy oświadczenie wydaje się po prostu wysadzać w tym przypadku.

Jaki jest najlepszy sposób sprawdzenia, czy okno dialogowe jquery ui zostało zainicjowane, aby można było poprawnie obsłużyć tę sytuację.

Odpowiedz

16

test, czy element ma klasę ui-dialog-content:

if ($("#dialog-myDialog").hasClass("ui-dialog-content") && 
    $("#dialog-myDialog").dialog("isOpen")) { 
    return; 
} 
3

Jeśli używasz rozwiązanie, które polega na obecności klasy css dodanego przez komponent, który jest poza kontrolą, a następnie pojawia się ryzyko z tego nie działa, jeśli nowa wersja komponentu zmienia sposób, w jaki zarządza klasami.

bardziej niezawodnym rozwiązaniem byłoby, aby dodać własny wskaźnik istnienia przy inicjalizacji dialogowym:

$("#popup").attr("_dialogInitialized", "yes").dialog({ ... }) 

następnie sprawdzić dla wskaźnika, gdy trzeba:

if ($("#popup[_dialogInitialized]").length == 1) { 
    // dialog has been previously initialized 
} else { 
    // dialog has been not yet been initialized 
} 
+1

To działało idealnie, dziękuję! – Markoh

0

Dodaj klasę gdy initilizing:

$("selector").addClass("initialized").dialog({ ... }); 

Następnie sprawdź klasę w razie potrzeby:

Powiązane problemy