2013-02-08 53 views
6

में संवाद बंद ईवेंट I jquery मोबाइल और कुछ एकाधिक चयन बॉक्स प्रदर्शित करने के लिए एक संवाद का उपयोग कर रहा हूं। चयन के आधार पर कुछ सामग्री गतिशील रूप से अजाक्स के साथ बनाई गई है। जब संवाद बंद हो जाता है तो मैं अजाक्स कॉल करना चाहता हूं (नियमित एक्स बटन के माध्यम से)। एचटीएमएल के मुख्य भागों देखो इस प्रकार है:jquery मोबाइल

<a href="#queryPage" data-rel="dialog" data-transition="slidedown" >Filter Results</a> 
    <div data-role="page" id="queryPage" data-theme="a"> 
    <div data-role="header" data-theme="a"> 
    <h1>Select Filters</h1> 
    </div> 
    <div data-role="content"> 
    <form action="" method="get" id="filterForm"> 
    <fieldset id ="filterFields"></fieldset> 
    </form> 
    </div> 
    </div> 

मैं वर्तमान में इस प्रकार पेज छिपाने पर कोड चलाकर कॉल कर रहा हूँ: $('#queryPage').live('pagehide', function(event) { //code for ajax call });

हालांकि, मैं फोन करना चाहते हैं जब संवाद बंद हो जाता है क्योंकि कुछ चुनिंदा सूचियां बड़ी होती हैं और वे एक नया पृष्ठ बनाते हैं जो क्वेरी पेज को छुपाता है, भले ही संवाद बंद नहीं हुआ हो। मैंने कोशिश की है:

$('#queryPage').bind('dialogclose', function(event) { 
     alert('closed'); 
    }); 

और यह भी कोशिश की

$('#queryPage').dialog({close:function(event, ui){ 
     alert("closed"); 
    }}); 

ये मैं एक समारोह के पृष्ठ लोड पर कहा जाता है में डाल दिया है, लेकिन चेतावनी नहीं दिखाया गया है जब संवाद बंद कर दिया है। किसी भी तरह की सहायता को आभार समझेंगे।

उत्तर

12

संवाद के लिए कोई विशिष्ट घटनाएं नहीं हैं क्योंकि वे केवल वे पृष्ठ हैं जो एक संवाद के रूप में प्रदर्शित होते हैं। pagehide ईवेंट आज़माएं।

$("#MyDialog").bind("pagehide",function(){ 
    alert("Dialog closed"); 
}); 

इसके अलावा, अपने नमूना कोड की पहली पंक्ति एक लिंक एक <div data-role="page"> जो नहीं किया जाना चाहिए के बाहर है कि नहीं है।

+0

क्षमा करें, मैंने उस पृष्ठ के बाकी पृष्ठ HTML कोड को छोड़ दिया क्योंकि मैंने नहीं सोचा था कि यह प्रश्न के लिए आवश्यक था। जैसे मैंने कहा, मैं वर्तमान में 'पेजहाइड' का उपयोग कर रहा हूं लेकिन मैं इसे करने के लिए बेहतर या अन्य तरीकों की तलाश में हूं। – user1868237

1

Pagehide जैसे प्रत्यायोजित किया जा सकता:

$(document).delegate("#MyDialog", "pagehide", function() { 
    alert("Dialog closed"); 
}); 

और आप भी बुला पृष्ठ की स्क्रीन तत्वों के लिए उपयोग होगा।

0

एंडलेर ने jquery का उपयोग करके संवाद बंद करने के लिए उचित ईवेंट साझा किया। हालांकि, हम इस तरह से कोड भी कर सकते हैं।

$(document).on("pagehide","#Dialog",function(){ 
     console.log('Dialog has closed.'); 
    });