2012-08-08 12 views
12

Los valores que obtengo para $(el).css('left') y $(el).position().left son diferentes?¿Por qué jQuery .css ('left') y .position(). Left devuelven valores diferentes?

Si voy $(el).css('left', '100px'), a continuación, se vuelve $(el).css('left')110px en lugar de 100px (sí, siempre es un 10% más) y si evalúo $(el).position().left, me da 100.

¿Por qué Chrome se comporta de esta manera? Puede ver cómo esto afectaría las animaciones jQuery usando la propiedad left.

Estoy usando Chrome 21.0.1180.57 en Ubuntu.

EDIT 1: Parece que solo afecta a Chrome, FF 14.0.1 me da los mismos valores.

Respuesta

17

El left devuelve el valor calculado de la propiedad CSS saliente.

position().left devuelve la coordenada x en relación con el primer elemento primario desplazado del elemento.

Estos valores can be equal y pueden ser not equal.

position().left también puede ser fácilmente different between browsers debido a la representación diferente, mientras que .css("left") solo puede diferir en las unidades dadas, si eso.

+0

Excepto que '.css ("izquierda")' no está haciendo eso! http://i.imgur.com/auymh.png En Chrome, '.position(). left' me está dando el valor de la propiedad CSS' left'. –

+0

@GauravDadhania ¿me puedes mostrar una jsfiddle de eso? En la captura de pantalla, tienen diferentes valores. Uno es 1145 otro es 1040. – Esailija

+0

Hmm, traté de recrearlo, pero el marcado/diseño es demasiado complicado. Sin embargo, al final, ¡se solucionó el cambio de la 'posición' de' div.jspDrag' de 'relative' a' absolute'! Ahora obtengo la propiedad 'left' cuando uso' .css ("left") '. ¿Sabes por qué 'position: relative' fue el culpable? –

3

probar este código:

$("#div")[0].style.left