2015-11-04 98 views
0

我正在使用這個js將類添加到當前段,並將類添加到基於數據屬性的當前導航元素。offset()。top給出錯誤的值

var cutoff = $(window).scrollTop(), 
    cutoffRange = cutoff + 88, 
    curSec = $('#main-page').find('.s-active'), // Current section 
    curID = $(curSec).attr('id'), // Current section ID 
    curNav = $('.navigation').find('li[data-navSections*="'+curID+'"]'); // Find current menu item 

    $('.navigation li').removeClass('current-menu-item'); 
    $(curNav).addClass('current-menu-item'); 

$('.section').each(function(){ 

    if ($(this).offset().top > cutoff && $(this).offset().top < cutoffRange) { 
     $('.section').removeClass('s-active') 
     $(this).addClass('s-active'); 
     return false; // stops the iteration after the first one on screen 
    } 

}); 

這是例如HTML

<section id="section-home" class="s-active"></section> 
<section id="section-about" style="margin-top: 990px"></section> 
<section id="section-section"></section> 

#section-home { 
    position: fixed; 
    top: 0; 
    left: 0; 
    height: 100%; 
    width: 100%; 
    overflow: hidden; 
    z-index: 1; 
} 

#section-about, 
#section-section { 
    z-index: 2; 
    position: relative; 
} 

首先seection是一種視差,邊距到第二部分通過另一個腳本添加。

上面的腳本很好的工作,但並沒有將類添加到第一個固定的家庭部分。這不是一個偏移量()。的頂部?


的jsfiddle http://jsfiddle.net/f5ans6g6/

+0

請提供的jsfiddle – Alex

+0

有沒有錯誤與'偏移()'。所以請注意'offset()'和'position()'之間的區別。你的問題可能是** margin-top:990px​​'在**偏移量計算後加**。所以錯誤在你的代碼中。提供一個jsfiddle.com重現這個問題,我們可以幫助你更好地 –

+0

檢查這個'$(this).offset()。top> cutoff'如果兩者都是整數,有時這也是我的問題 –

回答

3

這是一個錯字;) 在此代碼:$('.section').each(function(){});你都指向一個名爲.section類。這是不可用的。

試試這個:

$('section') 
+1

好眼睛的男人:)有時我們看表面上看,我們不會注意到這個最小的和重要的事情 –