Comment obtenir le div de la position supérieure de la valeur pendant le défilement

Je suis en train de lancer un script lorsque div atteint à un certain point où il est défilé. Il y a un fixe de navigation et lorsque l'utilisateur fait défiler la fenêtre, il suppose que le changement de la valeur liquidative nom une fois qu'il atteint près de la valeur liquidative. Je suis en utilisant le $(window).fonction de défilement, mais il ne vérifie que le div en position une fois et de ne pas mettre à jour la valeur. Comment faire défiler vérifier la taille de la fenêtre tous les 5 à 10 px de déplacer afin qu'il ne prenne pas trop de mémoire/de traitement.
Le code est fixée à: http://jsfiddle.net/rexonms/hyMxq/

HTML

<div id="nav"> NAVIGATION
  <div class="message">div name</div>
</div>
<div id="main">
<div id="a">Div A</div>
<div id ="b"> Div B</div>
<div id ="c"> Div C</div>
</div>

CSS

#nav {
    height: 50px;
    background-color: #999;
    position:fixed;
    top:0;
    width:100%;

}

#main{
    margin-top:55px;
}
#a, #b, #c {
    height:300px;
    background-color:#ddd;
    margin-bottom:2px;
}

SCRIPT

$(window).scroll(function() {

    var b = $('#b').position();

    $('.message').text(b.top);

    if (b.top == 55) {
        $('.message').text("Div B");
    }
});​
Il est, en fait, la vérification de bsur chaque incrément de défilement, mais b's position par rapport au document ne change jamais. Voir @j08691 de réponse.

OriginalL'auteur rex | 2012-09-19