Obtenir la position d'un fixe div avec jquery
J'ai un div avec la position "fixe" et je veux obtenir la valeur de sa position par rapport à l'ensemble du document lorsque l'utilisateur fait défiler la page.
Donc, disons que je place la div (x=0,y=0) et ensuite, l'utilisateur fait défiler vers le bas un peu et maintenant, par rapport à la, la div est sur (X=0,y=300). Je veux obtenir cette information, je veux savoir la position exacte de la div à chaque instant, de nouveau, par rapport à l'ensemble du document, de ne pas la fenêtre ou le navigateur.
J'ai essayé beaucoup de choses mais rien ne semble pour obtenir ce que je veux.
L'un d'eux est présent code, qui ne fonctionne pas dans le cas d'un fixe div:
var position = $("#fixed").offset(); /*it gets the position of the div
"fixed" relative to the document*/
$("#fixed").html(position.top); /*it prints the obtained
value on the div "fixed"*/
Ici vous pouvez trouver le code en cours d'exécution, et vous pouvez voir que, lorsque vous faites défiler vers le bas, la valeur de la position de la div ne change pas.
Si je ne me trompe pas, le code doit imprimer une nouvelle valeur sur la div chaque fois qu'il change sa position verticale par rapport au document. Mais il s'avère que cela n'arrivera pas.
RÉSOLU:
La question a été tranchée par codef0rmer. J'ai été absent pour suivre le défilement pour actualiser la valeur de la position de la div. J'ai été un idiot. Donc le code final fonctionne très bien la façon dont il l'a écrit:
$(function () {
var position = $("#fixed").offset();
$("#fixed").html(position.top);
$(window).scroll(function () {
var position = $("#fixed").offset();
$("#fixed").html(position.top);
});
})
Et ici vous pouvez voir le code en cours d'exécution.
Merci à vous tous et spécialement à codef0rmer.
OriginalL'auteur m4rk | 2012-03-02
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser
.offset()
pour obtenir les coordonnées actuelles de l'élément par rapport au document alors que.position()
pour récupérer les coordonnées d'un élément par rapport à sa position par rapport parent.Comment voudriez-vous que le code fonctionne sans écrire de code pour le suivi de votre défilement? Voir: jsfiddle.net/kVJ4x/4
Oui, j'ai réalisé plus tard et je pensais que le fait d'essayer d'actualiser la valeur avec "mousemove", un stupide pensée en gardant à l'esprit que ce que je voulais était de déclencher l'action à chaque fois que l'utilisateur fait défiler vers le bas. Merci, ça fonctionne parfaitement maintenant, je vais le poster.
OriginalL'auteur codef0rmer
.offset() vous donne les coordonnées par rapport à l'ensemble du document.
Merci, mais comme je l'ai dit, j'ai essayé beaucoup de choses en quelques heures et j'ai bien sûr lu le jQuery api, qui est ce que vous citez. J'ai édité mon message, y compris la méthode que vous suggérez, mais il ne fonctionne pas.
OriginalL'auteur j08691
À moins que vous actualisez la page et la barre de défilement est à une position différente au moment de l'initialisation.
OriginalL'auteur Barry