2011-01-10 12 views
11

Dieser Code funktioniert in FF, aber nicht in IE:jQuery: Erste px Position eines Elements in Integer-Format

parseInt($('.scroller').css('left'); 

In FF kehrt 0px;

In IE gibt NaN zurück.

Was ist eine gute Möglichkeit, um eine Pixelposition eines Elements zu erhalten?

<div class="holder"> 
    <div class="scroller"> 
    </div> 
</div> 
+0

möglich duplicate von http://stackoverflow.com/questions/1100503/how-to-get-just-numeric-part-of-css-property-with-jquery – qbolec

Antwort

23

Verwenden offset:

$('.scroller').offset().left; 

offset() gibt ein Objekt enthalten, um die Eigenschaften und lefttop, die die Positionswerte relativ zu dem Dokument in Pixeln sind.

Wenn Sie die Position relativ zum übergeordneten Element festlegen möchten, verwenden Sie stattdessen position.

+0

Die 'Position' Methode war was ich brauchte, Vielen Dank! – kylex

+3

Es scheint, dass es Fälle gibt, in denen weder offset() noch position() den gewünschten Wert ergeben. Ich habe ein relativ positioniertes Element und in meinem Fall geben offset() und position() beide den gleichen Wert zurück und unterscheiden sich von $ ('element'). Css ('left'). Es ist der CSS-Wert, den ich brauche. Momentan benutze ich parseInt ($ ('. Element'). Css ('left'). Replace ('px', '')). Ich vermute, dass der Grund, warum IE auf Kylex's Versuch schockt, ist, dass es 'px' am Ende hat. Das abzustreifen scheint mit dem IE gut zu funktionieren. Weiß jemand einen besseren Weg, dies in diesem Fall zu tun? –

0

Es wäre jedoch immer relativ zum Dokument, daher wäre die Position() (relativ zum Elternteil, d. H. Halter) manchmal ziemlich genau und manchmal keine von ihnen.

Verwandte Themen