2012-06-22 15 views
6

इसलिए मुझे कस्टम बहु चयन नियंत्रण पसंद है जो jquery-mobile है और इसका उपयोग करना चाहते हैं। तो कृपया डेटा-रोल = "none" डालने का सुझाव न दें। लेकिन अगर विकल्प की सूची लंबी है तो मैं सिर्फ एक नई संवाद विंडो में खोलने के लिए चुनिंदा सूची का डिफ़ॉल्ट व्यवहार नहीं चाहता हूं।विकल्पों की बड़ी सूची के साथ jquerymobile बहु चयन नियंत्रण के लिए संवाद दृश्य को रोकें

कारण मैं नहीं चाहता कि व्यवहार यह है कि यह आईपैड पर इतना अच्छा काम नहीं कर रहा है। संवाद के बाईं ओर "एक्स" का उपयोग करके इसे बंद करना मुश्किल हो जाता है। किसी कारण से, यह आईपैड पर उत्तरदायी नहीं हो रहा है, लेकिन डेस्कटॉप पर ठीक काम करता है।

उत्तर

8

तो मल्टी मोबाइल सूची जावास्क्रिप्ट (यह दर्दनाक था) में वास्तव में गहरा खोद गया यह पता लगाने के लिए कि बहु चयन सूची के लिए पूर्ण स्क्रीन जाने का यह निर्णय कहां बनाया गया है। यह कोड मुझे बताता है कि इस तरह से कोई झंडा नहीं है कि मैं इससे बचने के लिए सेट कर सकता हूं।

हालांकि, बाद से यह सूची (menuHeight) की ऊंचाई पर निर्भर है, ठीक है कि मेरे लिए काम किया कुछ सीएसएस परिवर्तन (प्रत्येक सूची आइटम के लिए कम गद्दी) बनाने के लिए होता था, इसलिए मेरी सूची में आकार कम हो गया था:

.ui-selectmenu-list li .ui-btn-inner a.ui-link-inherit 
{ 
    padding: .5em 15px .5em 15px;  
} 

यदि आप संवाद दिखाने के लिए निश्चित रूप से मरना चाहते हैं, तो एक गंदे फिक्स को jquery मोबाइल कोड की आपकी स्थानीय प्रतिलिपि में कुछ ओवरराइड डालना होगा (मुझे ऐसा करने से नफरत है लेकिन यह एकमात्र तरीका है):

//TODO: vishalkumar : I can override here by replacing below line by if (false)   
if (menuHeight > screenHeight - 80 || !$.support.scrollTop) { 

       self.menuPage.appendTo($.mobile.pageContainer).page(); 
       self.menuPageContent = menuPage.find(".ui-content"); 
       self.menuPageClose = menuPage.find(".ui-header a"); 

       // prevent the parent page from being removed from the DOM, 
       // otherwise the results of selecting a list item in the dialog 
       // fall into a black hole 
       self.thisPage.unbind("pagehide.remove"); 

       //for WebOS/Opera Mini (set lastscroll using button offset) 
       if (scrollTop == 0 && btnOffset > screenHeight) { 
        self.thisPage.one("pagehide", function() { 
         $(this).jqmData("lastScroll", btnOffset); 
        }); 
       } 

       self.menuPage.one("pageshow", function() { 
        focusMenuItem(); 
        self.isOpen = true; 
       }); 

       self.menuType = "page"; 
       self.menuPageContent.append(self.list); 
       self.menuPage.find("div .ui-title").text(self.label.text()); 
       $.mobile.changePage(self.menuPage, { 
        transition: $.mobile.defaultDialogTransition 
       }); 
      } 
+0

मेरी एक जैसी इच्छा थी, यह बहुत बुरा है, ऐसा करने का कोई बेहतर तरीका नहीं है। मुझे अपनी एकाधिक चयन सूचियों पर popupafterclose घटनाओं को संभालने की आवश्यकता है (क्योंकि यह वह जगह है जहां मैं अपना डेटा सहेज रहा हूं)। हालांकि, यह ईवेंट पॉपअप मोड में प्रदर्शित होने पर ही निकाल दिया जाता है, लेकिन पेज मोड में नहीं। इस तरह के मामले को संभालने के लिए कोई बेहतर विचार? – scuba88

संबंधित मुद्दे