Unique de navigation de la page de menu qui active l'indicateur de

Je suis en train de mettre à jour la navigation pour une seule page web à l'aide de jQuery waypoints.

Je veux mettre à jour la navigation sur la base de la section en cours en vue. Il fonctionne très bien lorsque vous allez vers le bas en utilisant les liens de navigation. Mon problème est lorsque vous essayez de passer à une section au-dessus de la section en cours en vue de l'actif de l'ancre est l'un en dessous de l'endroit où il devrait être.

Veuillez consulter mon Démo.

jQuery

$(document).ready(function(){
        $('section').waypoint(function(direction) {
          thisId = $(this).attr('id');
          $('ul li').each(function(){
            var secondaryID = $(this).attr('class');
            if  ( secondaryID == thisId )
                {
                    $('ul li').removeClass('active');
                    $(this).addClass('active');
                }
            });
    },{offset: '0'});   
}); 
$('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') 
        || location.hostname == this.hostname) {

        var target = $(this.hash);
        target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
           if (target.length) {
             $('html,body').animate({
                 scrollTop: target.offset().top
            }, 500);
            return false;
        }
    }
});

HTML

<ul>
    <li class="test"><a href="#test"></a></li>
    <li class="test2"><a href="#test2"></a></li>
    <li class="test3"><a href="#test3"></a></li>
    <li class="test4"><a href="#test4"></a></li>
    <li class="test5"><a href="#test5"></a></li>
</ul>
<section id="test"></section>
<section id="test2"></section>
<section id="test3"></section>
<section id="test4"></section>
<section id="test5"></section>

Mise à jour

J'ai eu ce travail à l'aide de deux waypoint fonctions avec des positions différentes, mais ce n'est clairement pas la meilleure solution.

http://jsfiddle.net/SJkmh/10/

J'ai essayé de trouver un moyen de spécifier les décalages à partir à l'intérieur de la même fonction (fonction de direction), j'ai utilisé une variable de décalage avec les valeurs de (1 & -1), mais malheureusement il ne l'utilise +1.

http://jsfiddle.net/SJkmh/13/

OriginalL'auteur hyperdrive | 2013-08-27