2012-05-19 18 views
6

मैं इसे प्राप्त करना चाहता हूं ताकि पेज साइड होने पर मेरी साइडबार पर आखिरी div चिपचिपा रहता है, लेकिन पाद लेख पर रुक जाता है। मेरे पास यह लगभग online tutorial के साथ काम कर रहा है, लेकिन जब Disqus टिप्पणियां लोड होती हैं तो गणना गड़बड़ी होती है और यह केवल एक निश्चित बिंदु पर जाती है।पाद लेख पर तैरने वाली चिपचिपा साइडबार div को रोकें (लगभग काम कर रहे हैं)

यहां एक वर्किंग वर्जन http://jsfiddle.net/k56yR/1/ है, लेकिन क्या पाद लेख की ऊंचाई की गणना करने के लिए कुछ आसान तरीका है और फिर पृष्ठ के निचले हिस्से से स्क्रॉल करना बंद करने के लिए कहें?

उत्तर

14

मुझे लगता है कि आपकी समस्या यह है कि आपके $('#footer').offset().top आपके Disqus टिप्पणियों के लोड के बाद मूल्य परिवर्तन। तो आपको अपनी टिप्पणियों के लोड के बाद या हर बार आपकी घटना को आग लगने के बाद footerTop (और limit नए footerTop मान के आधार पर) अपडेट करने की आवश्यकता है।

कुछ की तरह:

$(function(){ // document ready 
    if ($('#sticky').length) { // make sure "#sticky" element exists 
     var el = $('#sticky'); 
     var stickyTop = $('#sticky').offset().top; // returns number 
     var stickyHeight = $('#sticky').height(); 

     $(window).scroll(function(){ // scroll event 
      var limit = $('#footer').offset().top - stickyHeight - 20; 

      var windowTop = $(window).scrollTop(); // returns number 

      if (stickyTop < windowTop){ 
      el.css({ position: 'fixed', top: 0 }); 
      } 
      else { 
      el.css('position','static'); 
      } 

      if (limit < windowTop) { 
      var diff = limit - windowTop; 
      el.css({top: diff}); 
      } 
     }); 
    } 
}); 

अधिकांश मामलों की तरह ही, इस के लिए एक jQuery प्लगइन उपलब्ध here है, के रूप में julianm उसकी टिप्पणी में बताया,। चिपचिपा बॉक्स को किसी भी वांछित स्थिति पर रोकने के लिए, यह स्टॉपर वैल्यू का भी समर्थन करता है।

+0

धन्यवाद, यह लगभग काम कर रहा है। सोचा था कि यह था, लेकिन विभिन्न ब्राउज़रों के साथ यह सीमा को अनदेखा करता है और पाद लेख के पीछे स्क्रॉल करता है। ऐसा लगता है कि जब आप या तो कैश साफ़ करते हैं या पेज रीफ्रेश करते हैं, तो प्रत्येक दोहराव दृश्य के लिए नहीं होता है। कोई विचार? यहां साइट पर एक उदाहरण है http://thecomeupbmx.net/videos/red-bull-empire-of-dirt-practice-edit/ (यह मेरा नहीं है, मैं बस इस पर काम करता हूं) –

+0

मुझे किसी प्रकार की आवश्यकता होगी इसके लिए टेस्ट केस का हमेशा असफल रहता है। यह पुराने जेएस को पकड़ने वाले ब्राउज़र हो सकता है लेकिन मैं इसे पुन: उत्पन्न नहीं कर सकता। – 19greg96

+0

यह jQuery प्लगइन https://github.com/AndrewHenderson/jSticky (मैंने इसे माइक जोनास द्वारा प्रदान किए गए पिछले उदाहरण की टिप्पणियों में से एक में देखा) ठीक वही किया जो मैं ढूंढ रहा था। यह किसी भी वांछित स्थिति पर चिपचिपा बॉक्स को रोकने के लिए एक स्टॉपर मान (कक्षा, आईडी या यहां तक ​​कि एक संख्यात्मक मान भी हो सकता है) का समर्थन करता है। – julianm

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

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