2015-11-02 220 views
1

我對jquery比較陌生,我試圖找到body內部div元素的正確偏移量。我想讓這個div元素粘滯,只要我向下滾動並傳遞這個元素的頂部偏移量。將元素偏移量添加到jQuery偏移量計算中

我跟着這個教程:https://www.youtube.com/watch?v=utonytGKodc和它的作品,但我有一個metaslider在我的頭和這個元素的寬度/高度留出了計算,以找到合適的偏移....

結果是我的元素成爲一個粘性元素的方式很快,有沒有辦法我可以手動添加滑塊座標(偏移量)到我想粘滯元素的偏移量計算?

var offerteOffset = jQuery(".agendawrap").offset().top //+ metaslider coordinates??; 
    alert(offerteOffset); 

    jQuery(window).scroll(function() { 
     var scrollPos = jQuery(window).scrollTop(); 

     if (scrollPos >= offerteOffset) { 
      jQuery(".agendawrap").addClass("fixed"); 
     } else { 
      jQuery(".agendawrap").removeClass("fixed"); 
     } 

    }); 

回答

0

我不相信人們做這樣糟糕的教程。

首先:不要一直寫jQuery。看看this thread。 基本上它說:使用調用函數有自己的適用範圍:

(function($) { /* all your jQuery goes here */ })(jQuery); 

所以,你可以只輸入$而不是jQuery

你原來的問題:

(function($) { 

    $(function() { // document ready... 

    var scrollTolerance = 50, 
     agendawrap = $(".agendawrap"), 
     offerteOffset = agendawrap.offset().top; 

    $(window).on('scroll', function() { 
     var scrollPos = $(window).scrollTop(); 

     // OR: if (scrollPos - scrollTolerance >= offerteOffset) { 
     if (scrollPos + scrollTolerance >= offerteOffset) { 
      agendawrap.addClass("fixed"); 
     } 
     else { 
      agendawrap.removeClass("fixed"); 
     } 

    }); 

    }); 

})(jQuery); 
+0

奧萊特非常感謝,你可以聯繫我一個很好的教程,因爲我想知道這是如何工作的,而不是僅僅複製/粘貼 –

+0

流,我用它在WordPress的我認爲這就是爲什麼我使用jQuery而不是$? @alex –

+0

@ W.Romijn不管你在哪個環境中使用它,你都可以使用上述方式無處不在,這是當前的最佳實踐。我強烈建議你試着瞭解那裏發生的事情。我真的很喜歡你試圖理解而不僅僅是複製/粘貼,所以如果你有興趣,我會爲你提供一個小聊天會話:) – Alex