Używam okna dialogowego interfejsu użytkownika jQuery. Jeśli jest otwarta, chcę zrobić jedną rzecz. Jeśli jest zamknięty, chcę zrobić inny.
Moje pytanie brzmi: jak mogę wykryć, czy okno dialogowe interfejsu użytkownika jQuery jest otwarte, czy nie?
Używam okna dialogowego interfejsu użytkownika jQuery. Jeśli jest otwarta, chcę zrobić jedną rzecz. Jeśli jest zamknięty, chcę zrobić inny.
Moje pytanie brzmi: jak mogę wykryć, czy okno dialogowe interfejsu użytkownika jQuery jest otwarte, czy nie?
Odpowiedzi:
Jeśli przeczytasz dokumentację.
$('#mydialog').dialog('isOpen')
Ta metoda zwraca wartość logiczną (prawda lub fałsz), a nie obiekt jQuery.
$("#mydialog").hasClass("ui-dialog-content")
. Zobacz stackoverflow.com/questions/29528706/…
Właściwie musisz wyraźnie porównać to z prawdą. Jeśli okno dialogowe jeszcze nie istnieje, nie zwróci false (jak można by się spodziewać), zwróci obiekt DOM.
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
Jeśli chcesz sprawdzić, czy okno dialogowe jest otwarte na określonym elemencie, możesz to zrobić:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
Lub jeśli chcesz po prostu sprawdzić, czy sam element jest widoczny, możesz zrobić:
if ($('#elem').is(':visible')) {
// do something
}
Lub...
if ($('#elem:visible').length) {
// do something
}
$dialog.hasClass('ui-dialog-content')
Okno dialogowe jQuery ma isOpen
właściwość, której można użyć do sprawdzenia, czy okno dialogowe jQuery jest otwarte, czy nie.
Możesz zobaczyć przykład pod tym linkiem: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
Komentarz Nicka Cravera jest najprostszym sposobem uniknięcia błędu, który pojawia się, jeśli okno dialogowe nie zostało jeszcze zdefiniowane:
if ($('#elem').is(':visible')) {
// do something
}
Najpierw jednak powinieneś ustawić widoczność w swoim CSS, używając po prostu:
#elem { display: none; }