2012-02-21 21 views
5

पृष्ठ लोड होने पर मैं स्वचालित रूप से किसी विशेष div पर स्क्रॉल करना चाहता हूं। हालांकि, मुझे लगता है कि जेक्यूएम की स्क्रॉल के साथ शीर्ष कार्यक्षमता के साथ कुछ संघर्ष हो रहा है।jQuery मोबाइल - पेजेल लोड पर विशिष्ट div पर स्क्रॉल करें

$.mobile.silentScroll($("#myElementId").offset().top); 

जो सही ढंग से स्क्रॉल नहीं होता जब इस तरह लपेटा:

$('[data-role=page]').bind("pageshow", function() { 
    setTimeout(function(){$.mobile.silentScroll($("#myElementId").offset().top);},100); 
}); 
:

$('[data-role=page]').bind("pageshow", function() { 
    $.mobile.silentScroll($("#myElementId").offset().top); 
}); 

लेकिन इस तरह एक छोटे से समय समाप्ति के साथ ठीक से काम करता

मैं निम्नलिखित कोड का उपयोग कर रहा

कोड के अंतिम भाग के साथ समस्या यह है कि यह एक झिलमिलाहट का कारण बनता है, एक कूद के साथ पी और फिर पृष्ठ पर एक कूद। कोई विचार यह कैसे बचें?

उत्तर

2

आपका setTimeout काम करता है क्योंकि jQuery मोबाइल ढांचे को याद है कि आप कहां स्क्रॉल किए गए थे-यदि आप किसी ऐसे पृष्ठ पर लौट रहे हैं जो आप पहले गए थे और आपको अपनी स्क्रॉल के लिए अपना खुद का चलाने से पहले पूरा करना होगा। आप अनिवार्य रूप से वास्तव में कुछ बड़ा करने के लिए mobileinit ईवेंट हैंडलर के अंदर minScrollBack विकल्प बदलकर इस सुविधा को अक्षम कर सकते हैं:

<script src="[jQuery Core]"></script> 
<script> 
$(document).bind("mobileinit", function(){ 
    $.mobile.minScrollBack = 90000; 
}); 
</script> 
<script src="[jQuery Mobile]"></script> 

कि ऑटो स्क्रॉल कि jQuery मोबाइल ढांचा होती है जब आप एक पृष्ठ बाद वाली विज़िट में जाएँ अक्षम करना चाहिए ।

डॉक्स: StackOverflow पर http://jquerymobile.com/demos/1.0.1/docs/api/globalconfig.html

+0

धन्यवाद जैस्पर, लेकिन jQuery कोर और जेक्यूएम के बीच अपना कोड जोड़ने के बाद भी, यह अभी भी काम नहीं करता है। मुझे नहीं लगता कि यह मिनीस्क्रॉलबैक के साथ एक मुद्दा है, क्योंकि यह एक पूर्ण पृष्ठ रीफ्रेश के बाद भी होता है। उस बिंदु पर, जेक्यूएम को याद रखने में सक्षम नहीं होना चाहिए कि मुझे पहले स्क्रॉल किया गया था। – Steve

2

पहली पोस्ट!

इसके लिए धन्यवाद, मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जो संक्रमण के लिए बहुत सी कस्टम एनीमेशन का उपयोग करता है और यहां आने में थोड़ी देर लग गई, जैस्पर के जवाब ने मुझे सही दिशा में सेट किया, यह बस गायब था कोड का बिट:

<script src="[jQuery]"></script> 
<script> 
$(document).bind("mobileinit", function(){ 
    $.extend($.mobile, { 
     minScrollBack: 90000 // turn off scrolling to position on last page 
    }); 
}); 
</script> 
<script src="[jQuery mobile]"></script> 

यह चाल चल रहा था!

रेफरी: http://jquerymobile.com/test/docs/api/globalconfig.html

0

तुम लोग कभी जवाब करने की कोशिश की ???

यह तब तक काम नहीं करता जब तक कि आप $ .mobile.defaultHomeScroll को अपनी वांछित स्क्रॉल पर भी सेट न करें।

वह दो कदम है। 1. $ .mobile.minScrollBack को एक बड़े पर्याप्त मूल्य पर सेट करें। 2. पेज लोड पर, वांछित मान पर डिफ़ॉल्ट होम स्क्रॉल सेट करें।

फिर यह काम करता है।

0

मुझे बहुत कुछ करने की ज़रूरत नहीं थी ... मुझे इसे अनुभाग पर निम्नलिखित के साथ काम करना पड़ा।

<script>$(function() {$.mobile.defaultHomeScroll = $(window).scrollTop();});</script> 
संबंधित मुद्दे