2015-04-09 5 views
5

У меня есть следующий код для обнаружения, если диалоговое окно JQuery UI открыто:Как узнать, был ли инициализирован запрос jquery ui dialog?

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

, который прекрасно работает, но я нашел такую ​​ситуацию, когда этот код дозвонился до диалога инициализации в первую очередь, и это, если кажется, просто взрывается в этом случае.

Каков наилучший способ проверить, был ли инициализирован диалог jquery ui, чтобы я мог правильно справиться с этой ситуацией.

имеет

ответ

16

проверить, является ли элемент в ui-dialog-content класс:

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

Если вы используете решение, которое опирается на наличие класса CSS, добавленного компонента, который находится вне вашего контроля, то вы рискуете это не работает, если новая версия компонента изменяет способ управления классами.

Более надежным решением было бы добавить свой собственный индикатор существования в диалоге инициализации:

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

Затем проверьте для индикатора, когда вам нужно:

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

Это сработало отлично, спасибо! – Markoh

0

Добавьте класс, когда initilizing:

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

Тогда необходимо проверить класс при необходимости:

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