2012-10-17 24 views
5

मैं सिर्फ jQuery prepend के साथ काम कर रहा था और उम्मीद के अनुसार काम नहीं कर सका।jQuery प्रीपेन्ड - ऑटो स्क्रॉल को रोकें

क्या मैं कर रहा हूँ:

prepending एक .content div #main div के लिए हर एक सेकंड

लेकिन, जब मैं थोड़ा नीचे स्क्रॉल [एक बार पृष्ठ की सामग्री से भरा हुआ है] , मैं वापस #main के शीर्ष या नवीनतम प्रीपेड .content

कैसे स्क्रॉल हो रहा है मुझे क्या करना:

रोकें viewport में बदलाव करने से - संलग्न

संबंधित fiddle

+1

दृश्य बदल रहा है नहीं है; पृष्ठ लंबा हो जाता है इसलिए शीर्ष से स्क्रॉल दूरी स्थैतिक है जबकि पूर्ण पृष्ठ की लंबाई गतिशील रूप से बड़ी हो जाती है (इस प्रकार नीचे तत्व व्यूपोर्ट से आगे जाते हैं)। इसे बनाने की कोशिश कर रहे हैं ताकि यदि आप पृष्ठ के निचले हिस्से तक सभी तरह से स्क्रॉल करते हैं तो अंतिम तत्व "गिरने" के बजाय दृश्य में रहता है? –

+0

@ ब्रैड क्रिस्टी मैं मूल रूप से 'दृश्यता क्या है' चाहता हूं [स्क्रॉल बार को छोड़कर, जो स्पष्ट रूप से बदलना चाहिए] प्रीपेन्ड के बावजूद बिल्कुल भी नहीं बदला जा सकता है। – Prasanth

उत्तर

13

जैसा कि मैंने एक टिप्पणी में विस्तार से बताया के मामले में की तरह, पुस्तक वास्तव में नहीं बदल रहा है। विंडो की स्क्रॉल "शीर्ष से दूरी" (डीएफटी) पर आधारित है। यही कहना है कि यदि आपके पास कोई स्क्रॉलबार नहीं है, तो आप डीएफटी 0 हैं। स्क्रॉलबार शुरू होने के बाद अब आपके पास काम करने की दूरी है।

क्योंकि सामग्री अधिक हो रही है क्योंकि व्यूपोर्ट केवल इतना पिक्सेल ऊंचा है, कुछ सामग्री पृष्ठ के नीचे "गिरती है" (प्रीपेन्ड आपके नए तत्व की ऊंचाई से डीएफटी बंद कर रहा है)।

नए तत्व की ऊंचाई के साथ इसका सामना करने का सबसे अच्छा तरीका है। यह आपको तब तक एक स्थिति में स्क्रॉल करने की अनुमति देता है, क्योंकि नए तत्व जोड़े जाते हैं, आप तदनुसार स्क्रॉल स्थिति को संशोधित करते हैं। http://jsfiddle.net/bradchristie/66RvC/1/

और कोड (संदर्भ के लिए):

यहाँ मैं क्या मतलब है, इसका एक उदाहरण

var f = function(){ 
    var t = $(window).scrollTop(),  // Window's current scroll position 
     $d = $(d()).prependTo('#main'), // store the new element 
     h = $d.outerHeight();   // also get its height 
    if (t){        // Only adjust if they've scrolled 
     $(window).scrollTop(t + h);  // add the delta to the scroll position 
    } 
    setTimeout(f, 1000); 
}; 
+0

और, संलग्न करने के लिए डीएफटी के साथ कुछ लेना देना नहीं है और मुझे कोई समस्या नहीं है। सही? – Prasanth

+0

@goldenparrot: यह नहीं कि इसकी कोई प्रासंगिकता नहीं है, यह सिर्फ इतना है कि इसमें बहुत से तत्वों को स्थानांतरित नहीं किया जाता है। हालांकि, यदि आपके पास किसी पृष्ठ पर दो सूचियां थीं और आप शीर्ष पर सूची में तत्व जोड़ना जारी रखते हैं, तो दूसरी सूचियों के तत्व बदल जाएंगे और आपको एक ही समस्या होगी। –

+1

@goldenparrot: मेरा मतलब क्या है [यहां] (http://jsfiddle.net/bradchristie/66RvC/3/) (प्रीपेन्ड के बजाय परिशिष्ट का उपयोग करना)। ध्यान दें कि इसके बाद सामग्री के साथ अब मायने रखता है। –

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