web-dev-qa-db-fra.com

jQuery: Différence entre position () et offset ()

Quelle est la différence entre position() et offset()? J'ai essayé de faire ce qui suit dans un événement de clic:

console.info($(this).position(), $(this).offset());

Et ils semblent retourner exactement la même chose ... (L'élément cliqué est dans une cellule de tableau dans un tableau)

172
Svish

Cela dépend du contexte dans lequel l'élément se trouve. position renvoie la position par rapport au parent du décalage, et offset fait de même par rapport au document. Évidemment, si le document est le parent offset, ce qui est souvent le cas, ceux-ci seront identiques.

Si vous avez une mise en page comme celle-ci, cependant:

 <div style="position: absolute; top: 200; left: 200;">
     <div id="sub"></div>
 </div>

Alors le offset pour sous sera 200: 200, mais son position sera 0: 0.

205
David Hedlund

La méthode . Offset () nous permet de récupérer la position actuelle d’un élément par rapport au document . Comparez cela avec . Position () , qui récupère la position actuelle par rapport au parent décalé . .Offset () est le plus utile pour positionner un nouvel élément par-dessus un élément existant en vue d'une manipulation globale (en particulier pour l'implémentation par glisser-déposer).

Source: http://api.jquery.com/offset/

28
jAndy