Risposte:
Se sono uguali dipende dal contesto.
position
restituisce un {left: x, top: y}
oggetto relativo al genitore offset
offset
restituisce un {left: x, top: y}
oggetto relativo al documento .
Ovviamente, se il documento è il genitore offset, come spesso accade, questi saranno identici. Il genitore offset è "l'elemento contenente posizionato più vicino".
Ad esempio, con questo documento:
<div style="position: absolute; top: 200; left: 200;">
<div id="sub"></div>
</div>
Quindi lo $('#sub').offset()
sarà {left: 200, top: 200}
, ma lo .position()
sarà {left: 0, top: 0}
.
sub
un posizionamento assoluto a 0: 0, allora sarà nell'angolo in alto a sinistra del genitore offset.
.position
aggiornato in 1.12.0 => github.com/jquery/jquery/issues/1708
Il metodo .offset () ci consente di recuperare la posizione corrente di un elemento rispetto al documento . Contrastare questo con .position () , che recupera la posizione corrente relativa al genitore offset . Quando si posiziona un nuovo elemento sopra uno esistente per la manipolazione globale (in particolare, per implementare il trascinamento della selezione), .offset () è il più utile.
Entrambe le funzioni restituiscono un oggetto semplice con due proprietà: larghezza e altezza.
offset () si riferisce alla posizione relativa al documento.
position () si riferisce alla posizione relativa al suo elemento genitore
MA quando la posizione css dell'oggetto è "assoluta" entrambe le funzioni restituiranno larghezza = 0 e altezza = 0