2015-04-09 15 views
5

Ich habe den folgenden Code zu erkennen, ob ein jQuery UI-Dialog geöffnet ist:Wie kann ich feststellen, ob eine jQuery-Dialogabfrage initialisiert wurde?

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

die gut arbeitet, aber ich fand eine Situation, wo dieser Code aufgerufen vor dem Dialog in erster Linie initialisiert wird und dies, wenn Aussage scheint in diesem Fall einfach zu explodieren.

Was ist der beste Weg zu überprüfen, ob ein jquery ui Dialog initialisiert wurde, damit ich diese Situation richtig behandeln kann.

Antwort

16

-Test, ob das Element hat die ui-dialog-content Klasse:

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

Wenn Sie eine Lösung verwendet werden, die durch eine Komponente hinzugefügt Gegenwart einer CSS-Klasse beruht, die außerhalb Ihrer Kontrolle ist, dann laufen Sie Gefahr, Dies funktioniert nicht, wenn eine neue Version der Komponente die Verwaltung von Klassen ändert.

Eine zuverlässigere Lösung wäre eine eigene Existenz Indikator bei Dialog Initialisierung hinzuzufügen:

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

Dann für Ihre Anzeige überprüfen, wenn Sie benötigen, um:

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

Dies funktionierte perfekt, danke! – Markoh

0

eine Klasse hinzufügen, wenn initilizing:

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

Dann überprüfen Sie bei Bedarf die Klasse:

if ($("selector").hasClass("initialized")) { ... } 
Verwandte Themen