最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to find the closest element to the current position with jQuery - Stack Overflow

programmeradmin4浏览0评论

I have a document with several sections like this:

<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>

How do I grab the closest <div.section> to the current scroll position (presumably, this would equate to the section that the reader is currently looking at)?

I have a document with several sections like this:

<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>

How do I grab the closest <div.section> to the current scroll position (presumably, this would equate to the section that the reader is currently looking at)?

Share Improve this question asked May 25, 2012 at 19:51 ScribblemacherScribblemacher 1,6381 gold badge19 silver badges32 bronze badges 3
  • Besides using hover you could take the scroll position and subtract the height of each '.section' from it till it is 0 or less. That will be increasingly difficult with the more you have wrapping these divs. – bygrace Commented May 25, 2012 at 19:55
  • There is a fair amount wrapped around these divs, and a lot inside it (it's the HTML output from docbook) – Scribblemacher Commented May 25, 2012 at 20:01
  • gizmovation gives a better approach below anyways – bygrace Commented May 25, 2012 at 20:09
Add a comment  | 

2 Answers 2

Reset to default 22

You can use $(window).scrollTop() and $(el).postion().top to figure out how far the element is from the top of the screen after scrolling.

You can then use this information to manipulate the element as desired.

Here is a working jsfiddle example: http://jsfiddle.net/gizmovation/x8FDU/

Whenever you hover an element the mousemove event tells you which element you're hovering over.

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

One drawback may be the fact e.target will give you the element with the highest z-index -- the one in the top-most layer -- so if you have an overlay above your text it will give you the overlay not the text div.

发布评论

评论列表(0)

  1. 暂无评论