2012-08-08 3 views
12

Die Werte, die ich für $(el).css('left') und $(el).position().left bekomme, sind unterschiedlich?Warum gibt jQuery .css ('left') und .position(). Left verschiedene Werte zurück?

Wenn ich $(el).css('left', '100px') gehen, dann $(el).css('left') es gibt 110px statt 100px (ja, es ist immer 10% mehr), und wenn ich $(el).position().left bewerten, es gibt mir 100.

Warum verhält sich Chrome so? Sie können sehen, wie dies Auswirkungen auf jQuery-Animationen mit der Eigenschaft left haben würde.

Ich verwende Chrome 21.0.1180.57 auf Ubuntu.

EDIT 1: Scheint nur Auswirkungen auf Chrome, FF 14.0.1 gibt mir die gleichen Werte.

Antwort

17

Die left gibt den berechneten Wert der Eigenschaft CSS left zurück.

position().left gibt die x-Koordinate relativ zum ersten versetzten Elternelement zurück.

Diese Werte und sie können not equal sein.

position().left kann auch leicht different between browsers wegen unterschiedlicher Rendering sein, während .css("left") nur in den angegebenen Einheiten unterscheiden kann, wenn das.

+0

Außer, dass 'css ("links")' ist das nicht zu tun! http://i.imgur.com/auymh.png Bei chrome gibt '.position(). left' den CSS' left' Eigenschaftswert. –

+0

@GauravDadania Kannst du mir das zeigen? Im Screenshot haben sie unterschiedliche Werte. Eins ist 1145 anderes ist 1040. – Esailija

+0

Hmm, ich habe versucht, es neu zu erstellen, aber das Markup/Styling ist zu kompliziert. Die "Position" von "div.jspDrag" von "relativ" auf "absolut" wurde jedoch schließlich korrigiert! Jetzt bekomme ich die tatsächliche 'linke' Eigenschaft, wenn ich' .css ("left") 'verwende. Weißt du, warum "Position: relativ" der Schuldige war? –

3

Versuchen Sie diesen Code:

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