2012-11-27 23 views
14

jQuery में सभी खोले गए dialog बक्से कैसे बंद कर सकते हैं? स्थिति अगले है: मेरे पास संवाद के बिना एक साधारण पृष्ठ है। इसमें कुछ बटन हैं जो संवाद के मालिक हैं।सभी खुले संवाद बॉक्स बंद करें? (JQuery)

जब मैं एक बटन पर क्लिक करता हूं तो मुझे सभी खुले संवाद बंद करने की आवश्यकता होती है। यहाँ

<div id="buttons"> 
    <a href="#" id="btn_1">Button 1</a> 
    <a href="#" id="btn_2">Button 2</a> 
    <a href="#" id="btn_3">Button 3</a> 
</div> 
<div id="dialog_1" class="dialogbox">...</div> 
<div id="dialog_2" class="dialogbox">...</div> 
<div id="dialog_3" class="dialogbox">...</div> 

और है jQuery:

यहाँ HTML है

$(function() { 
    $('#buttons').find('a').click(function() { 
     // close all dialogs 
     $('.dialogbox').dialog("close"); 

     // find out clicked id and open dialog 
     var nr = this.id.split("_")[1]; 
     $('#dialog_'+nr).dialog(); 
    }); 
}); 

क्रोम कहते हैं: Uncaught Error: cannot call methods on dialog prior initialization; attempted to call method 'close'

मुझे $('.dialogbox').dialog('isOpen') की जांच करने की कोशिश की गई, लेकिन एक ही परिणाम।

मैं सभी संवाद कैसे बंद कर सकता हूं?

$(".ui-dialog-content").dialog("close");

+1

आपको पहले अपने संवादों को प्रारंभ करने से पहले इस समारोह कभी मिल के $() कहा जाता है के लिए तैयार (function() {। $ ('। dialogbox') संवाद ({})}) –

उत्तर

29

के बाद से वे सभी एक ही वर्ग के वारिस, यह सब और करीब चयन करने के लिए सबसे अच्छा तरीका है और उन्हें बंद कर देते हैं: -।

$(".ui-dialog-content").dialog("close"); 
+1

sweeeeeeeeeeet! – sajanyamaha

+0

सावधान! एचटीएमएल में संवाद के लिए जिन्हें अभी तक शुरू नहीं किया गया है, इसके परिणामस्वरूप एक त्रुटि हो सकती है। एक कामकाजी समाधान यहां है: http://stackoverflow.com/a/9060927/368896 –

1

के रूप में वे सब .ui-dialog-content वर्ग है आप सरल यह कोशिश कर सकते हैं ताकि द्वारा चयन करें,:

+0

आपका उत्तर स्वीकार्य से बेहतर कैसे है? –