¿Cuál es la diferencia entre position() y offset()? Traté de hacer lo siguiente en el evento click:

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

Y que parecen volver exactamente el mismo… (El hecho clic en el elemento está dentro de una celda de tabla en una tabla)

InformationsquelleAutor Svish | 2010-07-08

3 Comentarios

  1. 205

    Si son de la misma depende del contexto.

    • position devuelve un {left: x, top: y} objeto relativa a la compensación de los padres

    • offset devuelve un {left: x, top: y} objeto relativa al documento.

    Obviamente, si el documento es el desplazamiento de los padres, que a menudo es el caso, estos serán idénticos. El desplazamiento de los padres es «el más cercano posicionado elemento de contención.»

    Por ejemplo, con este documento:

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

    A continuación, el $('#sub').offset() será {left: 200, top: 200}, pero su .position() será {left: 0, top: 0}.

    • Así el desplazamiento de los padres es el primer padre con posición absoluta? o?
    • whoa, ¿yo realmente echo de menos el código de sangría? gracias por la edición. sí, el desplazamiento de los padres es el más cercano posicionado de los padres. es decir, un elemento con posición absoluta, relativa o fijo (pero no estática). este no es un jQuery o incluso un javascript cosa, usted tiene el mismo comportamiento en css: si usted fuera a dar sub posicionamiento absoluto a 0:0, luego estará en la esquina superior izquierda de la compensación de los padres.
    • Increíble, entonces tiene sentido completamente! (No hay problema con la edición, jeje. Yo lo hago todo el tiempo :p)
    • FYI, .position se actualizó en 1.12.0 => github.com/jquery/jquery/issues/1708
    • esperamos que os gusten los cambios. Por favor, editar o volver como mejor le parezca.
  2. 28

    La .offset() método nos permite recuperar la posición actual de un elemento relativa al documento. Contraste esto con la .la posición (a), que recupera la posición actual relativa a la compensación de los padres. Cuando se coloca un nuevo elemento en la parte superior de uno ya existente para la manipulación global (en particular, para la implementación de la arrastrar-y-gota), .offset() es la más útil.

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

    • Como preguntó anterior, lo que se considera el desplazamiento de los padres? Parece que llamar a la posición (a) en el primer div dentro de otro div no siempre devuelve 0,0 – incluso cuando no hay ningún otro estilo o posicionamiento pasando.
    • jquery.offsetParent(): api.jquery.com/offsetparent «Obtener el más cercano antepasado elemento que se coloca.»
  3. -6

    Ambas funciones devuelven un simple objeto con dos propiedades: ancho & altura.

    offset() se refiere a la posición relativa del documento.

    la posición (a) se refiere a la posición relativa de su elemento padre

    PERO cuando el objeto de la css posición es «absoluta» ambas funciones devolverán ancho=0 & height=0

    • Corrección: desplazamiento y la posición devuelve un objeto con la izquierda y la parte superior de las propiedades, no de anchura y altura.

Dejar respuesta

Please enter your comment!
Please enter your name here