JQuery UIダイアログを使用しています。開いている場合は、1つだけやりたいことがあります。閉じている場合は、別の操作を行います。
私の質問は、jQuery UIダイアログボックスが開いているかどうかをどのように検出するかです。
実際には、明示的にtrueと比較する必要があります。ダイアログがまだ存在しない場合、(予想どおり)falseを返さず、DOMオブジェクトを返します。
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
特定の要素でダイアログが開いているかどうかを確認したい場合、これを行うことができます:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
または、要素自体が表示されているかどうかだけを確認する場合は、次の操作を実行できます。
if ($('#elem').is(':visible')) {
// do something
}
または...
if ($('#elem:visible').length) {
// do something
}
jQueryダイアログにはisOpen
プロパティがあり、jQueryダイアログが開いているかどうかを確認するために使用できます。
このリンクで例を見ることができます: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
Nick Craverのコメントは、ダイアログがまだ定義されていない場合に発生するエラーを回避する最も簡単なものです。
if ($('#elem').is(':visible')) {
// do something
}
ただし、次の単純な方法を使用して、CSSで最初に可視性を設定する必要があります。
#elem { display: none; }