पता लगाएँ कि क्या एक jQuery यूआई संवाद बॉक्स खुला है


97

मैं एक jQuery यूआई संवाद का उपयोग कर रहा हूं। अगर यह खुला है, तो मैं एक काम करना चाहता हूं। यदि यह बंद है, तो मैं एक और करना चाहता हूं।

मेरा सवाल है, मैं कैसे पता लगाऊं कि एक jQuery UI डायलॉग बॉक्स खुला है या नहीं?

जवाबों:


173

यदि आप डॉक्स पढ़ते हैं

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

यह विधि एक बूलियन (सही या गलत) लौटाती है, एक jQuery ऑब्जेक्ट नहीं।


1
रवींद्र! मुझे नहीं पता कि मैंने कैसे अनदेखी की। धन्यवाद।
user208662

1
आप किसी भी और सभी संवादों के लिए यह परीक्षण कैसे करेंगे? मान लें कि आपके पास अलग-अलग इनिट्स और विकल्पों के साथ दस अलग-अलग संवाद हैं और आप परीक्षण करना चाहते हैं कि उनमें से कोई भी खुला है, एक विशिष्ट चयनकर्ता नहीं?
किर्क रॉस

उक्त संवादों के लिए एक वर्ग जोड़ें, फिर अपने isOpen चेक पर चयनकर्ता को बदलें।
Suipaste

1
प्लस भी: दस संवाद? हो सकता है कि एक या दो का फिर से उपयोग करके विचार को कम करने के लिए विचार करने योग्य है
डेविड

1
यह भी जांच लें कि क्या संवाद के साथ भी आरंभ किया गया है $("#mydialog").hasClass("ui-dialog-content")। देखें stackoverflow.com/questions/29528706/...
शरद ऋतु लियोनार्ड

53

वास्तव में, आपको स्पष्ट रूप से इसकी तुलना सही से करनी होगी। यदि संवाद अभी तक मौजूद नहीं है, तो यह गलत नहीं लौटेगा (जैसा कि आप उम्मीद करेंगे), यह एक DOM ऑब्जेक्ट लौटाएगा।

if ($('#mydialog').dialog('isOpen') === true) {
    // true
} else {
    // false
}

4
नवीनतम JQuery में गलत है।
होयॉय

1
आप किसी भी और सभी संवादों के लिए यह परीक्षण कैसे करेंगे? मान लें कि आपके पास अलग-अलग इनिट्स और विकल्पों के साथ दस अलग-अलग संवाद हैं और आप परीक्षण करना चाहते हैं कि उनमें से कोई भी खुला है, एक विशिष्ट चयनकर्ता नहीं?
किर्क रॉस

2
शायद $ ("। यूआई-संवाद") की तरह एक फ़ंक्शन बनाएं। प्रत्येक (फ़ंक्शन (/ * इस संवाद की जांच करें * /))?
marcovtwout

21

यदि आप यह जांचना चाहते हैं कि क्या संवाद किसी विशेष तत्व पर खुला है तो आप ऐसा कर सकते हैं:

if ($('#elem').closest('.ui-dialog').is(':visible')) { 
  // do something
}

या यदि आप जांचना चाहते हैं कि क्या तत्व स्वयं दिखाई दे रहा है तो आप कर सकते हैं:

if ($('#elem').is(':visible')) { 
  // do something
}

या ...

if ($('#elem:visible').length) { 
  // do something
}

3
मैं अपनी div की जाँच करता हूँ अगर यह उस तरह से शुरू नहीं होती है:$dialog.hasClass('ui-dialog-content')
सर्गेई

धन्यवाद, मुझे मेरे लिए काम करने के लिए "isOpen" का उपयोग करके उपरोक्त उत्तर नहीं मिल सके, लेकिन यह काम किया।
काइल चैलेंजिस

2

jQuery के संवाद में एक isOpenसंपत्ति होती है जिसका उपयोग यह जांचने के लिए किया जा सकता है कि क्या jQuery संवाद खुला है या नहीं।

आप इस लिंक पर उदाहरण देख सकते हैं: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html


1

निक क्रेवर की टिप्पणी उस त्रुटि से बचने के लिए सबसे सरल है जो तब होती है यदि संवाद अभी तक परिभाषित नहीं किया गया है:

if ($('#elem').is(':visible')) { 
  // do something
}

आपको अपने सीएसएस में पहले दृश्यता सेट करना चाहिए, हालांकि, बस का उपयोग करके:

#elem { display: none; }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.