2012-05-25 13 views
13

Tengo un documento con varias secciones como esto:Cómo encontrar el elemento más cercano a la posición actual con jQuery

<div class='section' id='sec1'> 
    lalala 
    lalala 
    lalala 
</div> 

<div class='section' id='sec2'> 
    lalala 
    lalala 
    lalala 
</div> 

<div class='section' id='sec3'> 
    lalala 
    lalala 
    lalala 
</div> 

<div class='section' id='sec4'> 
    lalala 
    lalala 
    lalala 
</div> 

¿Cómo agarrar el más cercano <div.section> a la posición de desplazamiento actual (es de suponer, esto equivaldría a la sección que el lector está mirando actualmente)?

+0

Además de utilizar la libración que podría tomar la posición de desplazamiento y restar la altura de cada '.Sección' de ella hasta que es 0 o menos. Eso será cada vez más difícil con el más que tenga envolver estos divs. – bygrace

+0

Hay una buena cantidad en torno a estos divs, y mucho dentro (es el resultado HTML del docbook) – Scribblemacher

+0

gizmovation da un mejor enfoque debajo de todos modos – bygrace

Respuesta

19

Puede usar $(window).scrollTop() y $(el).postion().top para determinar qué tan lejos está el elemento desde la parte superior de la pantalla después de desplazarse.

A continuación, puede utilizar esta información para manipular el elemento como desee.

Aquí es un ejemplo de trabajo jsFiddle: http://jsfiddle.net/gizmovation/x8FDU/

+1

Hola chicos, Me preguntaba si esto podría lograrse con JavaScript simple también? – AppRoyale

-5

Cada vez que sobrepasa un elemento, el evento mousemove le indica el elemento sobre el que está pasando el puntero.

$(document).bind('mousemove', function(e) { 
    e.target 
    /* 
     the target in click/hover events 
     is the element that the event was 
     triggered on. 
    */ 
}); 

Una desventaja puede ser el hecho e.target le dará el elemento con el más alto z-index - la de la capa superior más - por lo que si usted tiene una capa por encima de su texto que le dará la superposición no el texto div.

+0

Por favor, agregue más aclaraciones sobre su respuesta y explique por qué funciona. – Johannes

+0

@johannes - la explicación en el comentario es bastante clara OMI. Cada vez que desplazas un elemento, el evento 'mousemove' te dice a qué elemento te estás acercando. –

Cuestiones relacionadas