2012-04-02 13 views
9

मैं jquery मोबाइल में लंबवत सामग्री स्क्रॉल कैसे अक्षम कर सकता हूं? मैं पेज सामग्री के लिए सभी स्क्रॉल अक्षम करना चाहता हूं। धन्यवाद।jQuery मोबाइल अक्षम पृष्ठ सामग्री लंबवत स्क्रॉल


मैं jquery.mobile पेज बना सकते हैं और सामग्री में मैं jquery.mobile.scrollview जोड़ें। जब मैं स्क्रॉलव्यू का उपयोग करता हूं तो मेरा पृष्ठ सामग्री स्क्रॉल ऊपर और नीचे स्क्रॉल करता है। मैं स्क्रॉल सामग्री कैसे अक्षम कर सकता हूं? मेरे पेज कोड:

$(document).delegate('.ui-content', 'touchmove', false);​ 

यह सब data-role="content" तत्वों पर स्क्रॉल को अक्षम करना चाहिए:

<div id="page2" data-role="page" align="center"> 
    <div data-role="content"> 
     <div id="mydatacontent" class="form"> 
      <div class="data-table-shadow" data-scroll="y" class="square single-block-view-v" style="height: 750px;"> 
       <table id="datatable" class="data-table"> 
        <tbody id="datatableContent"> 
         <!-- Table Data Here --> 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 
</div> 
+0

आप दोनों दिशाओं या बस लंबवत स्क्रॉल करना बंद करना चाहते हैं ... event.preventDefault आपको स्क्रॉल – iDroid

उत्तर

13

आप touchmove घटना के लिए बाध्य कर सकते हैं और return falsetouchmove घटना के डिफ़ॉल्ट व्यवहार को रोकने के लिए। यदि आप केवल इस कार्यक्षमता को किसी/कुछ पृष्ठ पर चाहते हैं तो आप अधिक विशिष्ट होने के लिए .ui-content चयनकर्ता को अपडेट कर सकते हैं। http://jsfiddle.net/RKXLH/embedded/result/

+4

को रोकने में मदद करेगा बस आपको यह जानना चाहता था कि आपके स्निपेट के अंत में एक * बुरा * अदृश्य चरित्र है। मैं इसे खेलने के लिए कॉपी/चिपकाया और यह काम नहीं किया। 15 मिनट के संघर्ष के बाद ही यह पता चला। –

+0

@ JoãoCunha दिलचस्प, मुझे कुछ भी दिखाई नहीं देता है। पृष्ठ के चरित्र सेट और आप जिस संपादक का उपयोग कर रहे हैं उसके बीच एक अंतर हो सकता है। – Jasper

+0

पुष्टि कर सकते हैं, विंडोज़ पर phpstorm में भी मेरे साथ हुआ। लाइन को हटाने और इसे मैन्युअल रूप से ठीक करने के लिए इसे ठीक करना। –

14

मैंने पाया जवाब ऊपर अच्छी तरह से काम कर रहा:

यहाँ एक डेमो आप अपने मोबाइल डिवाइस पर कोशिश कर सकते हैं। हालांकि, यह ".ui-content" के बाल-तत्वों पर स्क्रॉलिंग को रोक देगा। मैं बजाय

"scrollstart"

घटना का उपयोग करें और बच्चे तत्वों अभी भी स्क्रॉल कर रहे हैं।

$(document).delegate(".ui-content", "scrollstart", false); 

आईओएस 6 वेबव्यू पर परीक्षण किया गया।

+1

उपरोक्त विधि काम करता है। लेकिन इसे वापस कैसे वापस करें ?? यानी यदि स्क्रॉल स्टॉप बनाने के बाद, फिर भी अगर हम स्क्रॉलिंग शुरू करना चाहते हैं, तो क्या किया जाना चाहिए? - धन्यवाद – Mak

+3

@ मैक आपको फिर से .undelegate() 'का उपयोग करके प्रतिनिधि कार्यक्रम हैंडलर को हटा देना चाहिए: http://api.jquery.com/undelegate/। यदि आप '.on()' का उपयोग करते हैं तो आप ईवेंट हैंडलर को निकालने के लिए '.off()' का उपयोग कर सकते हैं। '.live()' 'die()' है, लेकिन आपको इस बिंदु पर '.live()' से दूर जाना चाहिए। – Jasper

+0

@ जैस्पर ने वही काम किया ... यह काम किया! – Mak

6

मेरे अनुभव में आप इस तरह से करना है:

var touchScroll = function(event) { 
    event.preventDefault(); 
}; 

$('element1').click(function() { 
    //this will disable the scroll 
    $(this).bind('touchmove', touchScroll); 

    $('element2').click(function() { 
     //this will enable scrolling 
     $(document).unbind('touchmove', touchScroll); 
    }); 
} 

element1 और element2 कुछ भी आप चाहते हैं हो सकता है, और निश्चित रूप से क्लिक समारोह सिर्फ उदाहरण के लिए, यदि आप किसी भी समारोह आप चाहते हैं चुन सकते हैं।

+0

यह काम करता है ... बहुत बहुत धन्यवाद .... भगवान आपको आशीर्वाद देते हैं .... –

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

  • कोई संबंधित समस्या नहीं^_^