Disons que j'ai un div $container
avec position: relative
, et un div $foo
en lui avec position: absolute
. Je veux obtenir la position $foo
par rapport au conteneur. jQuery rend ce facile:Comment obtenir la position absolue d'un élément dans une zone de défilement dans jQuery?
$foo.position()
qui renvoie un objet avec des propriétés top
et left
, spécifié en pixels. Le problème est, ce nombre n'est plus précis si le conteneur est défilé vers le bas ou vers la droite du tout. Plus précisément, cela change, alors que ce ne devrait pas être le cas. jQuery calcule position()
de sorte qu'il soit équivalent à $foo.offset() - $container.offset()
(où offset()
indique la position relative de la fenêtre) et $foo.offset()
change lorsque l'utilisateur fait défiler $container
.
Oui, c'est vrai. Ma question était mal formulée ... disons que vous n'avez pas de poignée pour '$ container'. Quoi alors? En d'autres termes, comment définiriez-vous une fonction '$ .fn.positionInRelativeContainer()'? –
@Trevor, ajouté du code pour trouver le parent parent le plus proche –
Je ne pense pas que le code fonctionnera, pour 2 raisons: D'abord, le '|| position === 'absolute'' est une faute de frappe, non? Deuxièmement, il retournera chaque parent relatif, pas le plus proche. Je suppose que s'il y avait potentiellement plusieurs éléments de défilement imbriqués, vous voudriez ajouter 'scrollLeft()' et 'scrollTop()' de chacun. Cela semble terriblement coûteux en termes de calcul, ce qui est un problème si vous voulez refaire le calcul en temps réel quand un utilisateur fait défiler. –