wake-up-neo.com

Ermitteln Sie, ob ein Dialogfeld für eine jQuery-Benutzeroberfläche geöffnet ist

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.

93
user208662

Wenn Sie die Dokumente lesen.

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

Diese Methode gibt ein Boolean (true oder false) zurück, kein jQuery-Objekt.

166
Byron Whitlock

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
}
51
marcovtwout

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
}
20
Nick Craver

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

2
Avinash

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; }
0
user2452922