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
b
sur 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
Vous devez vous connecter pour publier un commentaire.
Essayer cette jsFiddle exemple
Votre code d'origine était la seule vérification de la position de la div par rapport au haut du document, qui ne change jamais. Vous devez calculer le montant de défilement de la fenêtre a engagés et calculer en conséquence.
Également noter la différence beyween de jQuery
.position()
et.offset()
méthodes. Le.position()
méthode nous permet de retrouver la position d'un élément par rapport à l'offset parent. Cela contraste avec.offset()
, qui récupère la position actuelle par rapport au document.b.top == 55
ne sera jamais vrai.vrai, mais ce serait juste de devenir
if (dist==55)
.Je doute que ce soit l'intention de ce que l'OP est en train de faire. Je pense qu'il devrait probablement être
if (dist < 55)
d'accord.
à l'aide de pure js , comment puis-je vérifier ?
OriginalL'auteur j08691