2011-01-10 8 views
11

Questo codice funziona in FF, ma non in IE:jQuery: Ottenere la posizione px di un elemento in formato intero

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

in FF si restituisce 0px;

In IE restituisce NaN.

Qual è un buon modo per ottenere una posizione in pixel di un elemento?

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

possibile duplicato di http://stackoverflow.com/questions/1100503/how-to-get-just-numeric-part-of-css-property-with-jquery – qbolec

risposta

23

Uso offset:

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

offset() restituisce un oggetto contenente le proprietà left e top, che sono i valori di posizione relativa al documento in pixel.

Se si desidera la posizione relativa all'elemento padre, utilizzare invece position.

+0

Il metodo 'position' era quello di cui avevo bisogno, Grazie! – kylex

+3

Sembra che ci siano casi in cui né offset() né position() danno il valore desiderato. Ho un elemento relativamente posizionato e nel mio caso, offset() e position() restituiscono entrambi lo stesso valore ed è diverso da $ ('elemento'). Css ('left'). È il valore di sinistra del css di cui ho bisogno. Per ora sto usando parseInt ($ ('. Element'). Css ('left'). Replace ('px', '')). Sospetto che il motivo per cui IE si è soffermato sul tentativo di Kylex è che ha "px" alla fine. Spogliarlo sembra giocare bene con IE. Qualcuno sa di un modo migliore per farlo in questo caso? –

0

Sarebbe tuttavia sempre relativo al documento, quindi la posizione() (relativa al genitore, cioè il titolare) a volte sarebbe piuttosto accurata e talvolta nessuna di esse.

Problemi correlati