2015-04-09 22 views
5

Ben bir jquery ui iletişim açıksa algılamak için aşağıdaki kodu vardır:Bir jquery ui iletişim sorgusu başlatılmış olup olmadığını nasıl anlarım?

çalışıyor ama bu kod iletişim öncesinde bu ilk etapta başlatıldı ve varlık denilen olsun bir durum tespit
if ($("#dialog-myDialog").dialog("isOpen")) { 
     return; 
} 

ifadesi bu durumda sadece havaya uçur gibi görünüyor.

Bir jquery ui iletişim kutusunun başlatılıp başlatılmadığını kontrol etmenin en iyi yolu bu yüzden bu durumu düzgün bir şekilde halledebilirim.

eleman ui-dialog-content sınıfa sahip

cevap

16

Testi olsun: Eğer kontrol dışı bir bileşeni tarafından eklenen bir css sınıfı varlığına dayanan bir çözüm kullanmak, o zaman riskiyle

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

Bu, bileşenin yeni bir sürümü, sınıfları yönetme şeklini değiştirdiğinde işe yaramaz. initilizing zaman

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

Bu çok işe yaradı, teşekkürler! – Markoh

0

bir sınıf ekleme: gerektiğinde

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

Ardından gösterge kontrol edin:

Daha güvenilir bir çözüm iletişim başlatma adresinden kendi varlığını göstergesini eklemek olacaktır:

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

Daha sonra gerektiğinde sınıfı kontrol edin:

if ($("selector").hasClass("initialized")) { ... } 
İlgili konular