使用jQuery在滚动div的顶部和底部查找DOM元素

时间:2011-08-18 05:23:17

标签: javascript jquery dom scroll

我有一个包含列表项的滚动div。我已经定义了这个样板滚动事件

$("#scrollingDiv").scroll(function(e) {

});

在此滚动事件功能的内部,如何确定哪些元素位于当前可见区域的顶部和底部?

1 个答案:

答案 0 :(得分:3)

您可以尝试根据滚动<div>计算列表项的位置,然后扫描位置以查看哪些位置与scrollTop的{​​{1}}匹配。< / p>

或许这样的事情:

<div>

实时版(请打开您的控制台):http://jsfiddle.net/ambiguous/yHH7C/

你可能想要使用var base = $('#scrollingDiv').offset().top; var offs = [ ]; $('li').each(function() { var $this = $(this); offs.push({ offset: $this.offset().top - base, height: $this.height() }); }); $("#scrollingDiv").scroll(function() { var y = this.scrollTop; for(var i = 0; i < offs.length; ++i) { if(y < offs[i].offset || y > offs[i].offset + offs[i].height) continue; // Entry i is at the top so do things to it. return; } }); 的模糊性来获得合理的效果(1px可见几乎不会使元素成为最重要的元素),但基本的想法应该足够清晰。在if的高度混合可以让您看到底部有#scrollingDiv

如果您有很多列表项,那么线性搜索可能不是您想要的,但您应该能够毫不费力地解决这个问题。