2012-05-25 14 views
13

Ho un documento con più sezioni in questo modo:Come trovare l'elemento più vicino alla posizione corrente 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> 

Come posso afferro il più vicino <div.section> alla posizione di scorrimento corrente (presumibilmente, ciò equivarrebbe alla sezione che il lettore sta attualmente esaminando)?

+0

Oltre a utilizzare hover si potrebbe prendere la posizione di scorrimento e sottrarre l'altezza di ciascuna '.section' da esso fino a che è 0 o meno. Ciò sarà sempre più difficile con il maggior numero di avvolgimenti di questi div. – bygrace

+0

C'è una discreta quantità racchiusa tra questi div e molto all'interno (è l'output HTML da docbook) – Scribblemacher

+0

gizmovation fornisce un approccio migliore in ogni caso – bygrace

risposta

19

È possibile utilizzare $(window).scrollTop() e $(el).postion().top per capire fino a che punto l'elemento si trova dalla parte superiore dello schermo dopo lo scorrimento.

È quindi possibile utilizzare queste informazioni per manipolare l'elemento come desiderato.

Ecco un esempio jsfiddle lavoro: http://jsfiddle.net/gizmovation/x8FDU/

+1

Ciao ragazzi, Mi chiedevo se questo potesse essere ottenuto anche con JavaScript semplice? – AppRoyale

-5

Ogni volta che si passa il mouse su un elemento, l'evento mousemove indica l'elemento su cui si passa il mouse.

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

Uno svantaggio può essere il fatto e.target vi darà l'elemento con il più alto z-index - quello nello strato più in alto - quindi se avete un overlay sopra il testo che vi darà la sovrapposizione non il testo div.

+0

Si prega di aggiungere ulteriori chiarimenti sulla risposta e spiegare perché funziona. – Johannes

+0

@johannes - la spiegazione nel commento è abbastanza chiara IMO. Ogni volta che si passa sopra un elemento, l'evento "mousemove" ti dice su quale elemento stai passando il mouse. –

Problemi correlati