Ich verwende einen jQuery-UI-Dialog. Wenn es offen ist, möchte ich eines tun. Wenn es geschlossen ist, möchte ich noch einen machen.
Meine Frage ist, wie erkenne ich, ob ein Dialogfeld mit einer jQuery-Benutzeroberfläche geöffnet ist oder nicht.
Wenn Sie die Dokumente lesen.
$('#mydialog').dialog('isOpen')
Diese Methode gibt ein Boolean (true oder false) zurück, kein jQuery-Objekt.
Eigentlich muss man es explizit mit wahr vergleichen. Wenn das Dialogfeld noch nicht vorhanden ist, wird nicht (wie Sie es erwarten) falsch zurückgegeben, sondern ein DOM-Objekt.
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
Wenn Sie prüfen möchten, ob das Dialogfeld für ein bestimmtes Element geöffnet ist, können Sie Folgendes tun:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
Oder wenn Sie nur prüfen möchten, ob das Element selbst sichtbar ist, können Sie Folgendes tun:
if ($('#elem').is(':visible')) {
// do something
}
Oder...
if ($('#elem:visible').length) {
// do something
}
das jQuery-Dialogfeld verfügt über eine isOpen
-Eigenschaft, mit der überprüft werden kann, ob ein jQuery-Dialogfeld geöffnet ist oder nicht.
Ein Beispiel finden Sie unter diesem Link: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
Nick Cravers Kommentar ist der einfachste, um den Fehler zu vermeiden, der auftritt, wenn der Dialog noch nicht definiert wurde:
if ($('#elem').is(':visible')) {
// do something
}
Sie sollten jedoch zunächst die Sichtbarkeit in Ihrem CSS festlegen, indem Sie einfach Folgendes verwenden:
#elem { display: none; }