2012-05-25 120 views
13

我有這樣幾個章節的文檔:如何尋找到當前位置最近的元素用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> 

如何抓住最接近<div.section>當前滾動位置(據推測,這將等同於到讀者目前正在看的部分)?

+0

除了使用懸停你可以採取滾動位置,並減去其每個「.section僞」的高度,直到它是0或更低。隨着包裝這些div越多,這將越來越困難。 – bygrace

+0

圍繞這些div有相當數量的內容,並且裏面有很多內容(這是docbook的HTML輸出) – Scribblemacher

+0

gizmovation給出了一個更好的方法 – bygrace

回答

19

您可以使用$(window).scrollTop()$(el).postion().top來確定滾動後元素離屏幕頂端有多遠。

然後,您可以根據需要使用此信息操作元素。

這裏是一個工作的jsfiddle例如: http://jsfiddle.net/gizmovation/x8FDU/

+1

嗨,大家好, 我想知道這是否可以用普通的JavaScript來實現? – AppRoyale

-5

每當您懸停一個元素時,mousemove事件會告訴您您將哪個元素懸停在上面。

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

一個缺點可能是事實e.target將會給您提供最z-index的元素 - 一個在最上層 - 所以,如果你有你的文字上的覆蓋,它會給你覆蓋不是文字div

+0

請在你的答案中加入更多的說明並解釋它的工作原理。 – Johannes

+0

@johannes - 評論中的解釋非常清楚IMO。無論何時你懸停一個元素,'mousemove'事件都會告訴你你正在盤旋的元素。 –