2011-10-15 6 views
65

¿Cómo encuentro la distancia vertical desde la parte superior de la página hasta donde el elemento existe en el DOM usando javascript/jQuery?cómo encontrar la distancia vertical desde arriba en px de un elemento usando jQuery

He algo así como

<ul> 
    <li>one</li> 
    <li>one</li> 
    <li>one</li> 
    <li>one</li> 
    <li class="test">one</li> 
    .... 
    .... 
    .... 
    <li>one</li> 
</ul> 

Por ejemplo aquí, quiero encontrar la distancia vertical desde la parte superior de la página para el elemento li#test.

Probé .scrollTop() pero siempre viene como 0!

+1

¿esto es lo que estás buscando? var position = $ ('li # test'). position(); alert (position.top); –

Respuesta

143

Uso .offset() para obtener la distancia entre un elemento y la parte superior del documento: Respuesta

$("li.test").offset().top 
89

de Rob W es correcto - que le dará el desplazamiento desde la parte superior de la página completa.

Si usted desea conseguir el desplazamiento de la parte superior de la pantalla visible, usted debe hacer esto:

var viewableOffset = $("#li.test").offset().top - $(window).scrollTop(); 

Espero que ayude!

+1

Bienvenido a SO :) –

+2

Jaja gracias. SO siempre ha sido un éxito útil en las búsquedas de Google, y estaba aburrido y pensé que respondería algunas preguntas. Principalmente estoy curioseando por aquí mientras espero una respuesta en el sitio de la hermana de SO, ServerFault. Soy un programador veterano y administrador novato. :) – thexfactor

+1

Este es un código excelente si controlas la posición: ¡elementos fijos! – Starkers

3

Por lo que sé .offset() obtener la distancia entre la posición de desplazamiento actual y la parte superior del documento.

Es necesario utilizar la siguiente:. $("li.test").position().top

+0

relativo al offsetParent, que puede no ser el padre div – aaron

0

Uso $ (elemento) .offset() superior y añadir altura de los elementos fijos existentes en la página para que para que sea más precisa.

Cuestiones relacionadas