मैं एक jQuery यूआई संवाद का उपयोग कर रहा हूं। अगर यह खुला है, तो मैं एक काम करना चाहता हूं। यदि यह बंद है, तो मैं एक और करना चाहता हूं।
मेरा सवाल है, मैं कैसे पता लगाऊं कि एक jQuery UI डायलॉग बॉक्स खुला है या नहीं?
मैं एक jQuery यूआई संवाद का उपयोग कर रहा हूं। अगर यह खुला है, तो मैं एक काम करना चाहता हूं। यदि यह बंद है, तो मैं एक और करना चाहता हूं।
मेरा सवाल है, मैं कैसे पता लगाऊं कि एक jQuery UI डायलॉग बॉक्स खुला है या नहीं?
जवाबों:
$('#mydialog').dialog('isOpen')
यह विधि एक बूलियन (सही या गलत) लौटाती है, एक jQuery ऑब्जेक्ट नहीं।
$("#mydialog").hasClass("ui-dialog-content")
। देखें stackoverflow.com/questions/29528706/...
वास्तव में, आपको स्पष्ट रूप से इसकी तुलना सही से करनी होगी। यदि संवाद अभी तक मौजूद नहीं है, तो यह गलत नहीं लौटेगा (जैसा कि आप उम्मीद करेंगे), यह एक 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
}
$dialog.hasClass('ui-dialog-content')
jQuery के संवाद में एक isOpen
संपत्ति होती है जिसका उपयोग यह जांचने के लिए किया जा सकता है कि क्या jQuery संवाद खुला है या नहीं।
आप इस लिंक पर उदाहरण देख सकते हैं: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
निक क्रेवर की टिप्पणी उस त्रुटि से बचने के लिए सबसे सरल है जो तब होती है यदि संवाद अभी तक परिभाषित नहीं किया गया है:
if ($('#elem').is(':visible')) {
// do something
}
आपको अपने सीएसएस में पहले दृश्यता सेट करना चाहिए, हालांकि, बस का उपयोग करके:
#elem { display: none; }