jQuery:如何确定一个div被向下滚动

jQuery:如何确定一个div被向下滚动,jquery,scroll,Jquery,Scroll,我有一个定义了高度的div,并且overflow:scroll。其内容太长,因此出现滚动条 现在来看看ichy部分。它的一些内部HTML总是奇怪地出现(确切地说,是tableFilter插件生成的表的页脚)。我想让这个页脚在不需要时消失(它实际上出现在包含的边框之外)。我决定让它消失,但将其z-index设置为-1000。但是我想在包含的页面完全向下滚动时显示它 我如何知道用户已在底部滚动 使用下面答案的帮助,我使用了scrollTop属性,但是scrollTop和innerHeight之间的

我有一个定义了高度的div,并且
overflow:scroll。其内容太长,因此出现滚动条

现在来看看ichy部分。它的一些内部HTML总是奇怪地出现(确切地说,是tableFilter插件生成的表的页脚)。我想让这个页脚在不需要时消失(它实际上出现在包含
的边框之外)。我决定让它消失,但将其
z-index
设置为
-1000
。但是我想在包含
的页面完全向下滚动时显示它

我如何知道用户已在底部滚动


使用下面答案的帮助,我使用了
scrollTop
属性,但是
scrollTop
innerHeight
之间的区别是滚动条的大小加上一些未识别的增量。在Windows下的大多数浏览器中,滚动条的高度为16像素,但在Firefox中,滚动条的高度为17像素,而在IE中,滚动条的高度为20像素,在IE中,我的
内容的边框看起来更大


已经给出了一种计算滚动条大小的方法(实际上有两种方法…)。

无需jQuery即可获得该信息:

element.scrollTop;

在DIV的滚动事件中,使用该信息检查元素的高度,如果它匹配(或接近匹配),则执行任何您想要的操作。

您需要将DIV高度与scrollTop位置和元素高度进行比较

$(div).scroll(function(){ 
  if(isScrollBottom()){ 
    //scroll is at the bottom 
    //do something... 
  } 
}); 

function isScrollBottom() { 
  var elementHeight = $(element).height(); 
  var scrollPosition = $(div).height() + $(div).scrollTop(); 
  return (elementHeight == scrollPosition); 
} 

您只需执行以下操作即可知道div是否向下滚动:

 if ( div.scrollTop + div.clientHeight == div.scrollHeight ){
 //...
 }
它可以在Firefox、Chrome和IE8上运行{
function elementInViewport(el) {
   var listcontent= $(".listContainer")[0].getBoundingClientRect();
   var rect = $(el)[0].getBoundingClientRect();
   return [( rect.top >= 0 && rect.left >= 0 && rect.bottom <=  listcontent.bottom), ( rect.bottom - listcontent.bottom )]
}
var listcontent=$(“.listContainer”)[0]。getBoundingClientRect(); var rect=$(el)[0].getBoundingClientRect();
return[(rect.top>=0&&rect.left>=0&&rect.bottom您只需要使用div的scrollHeight属性而不是height。前面编写的函数isScrollBottom()可以这样放置

function isScrollBottom() {
var totalHeight = $("divSelector")[0].scrollHeight;
var scrollPosition = $("divSelector").height() + $("divSelector").scrollTop();
return (totalHeight == scrollPosition);
}
我想,很简单

$(this).scrollTop()


就可以了。

这不限于div:

toallyScrolled = element.scrollHeight - element.scrollTop === element.clientHeight;

来自MDN。该页面上还有一个很好的演示。

事实上,这不是元素的高度,而是内部高度和容器高度之间的差异。不是吗?我和Shaun说的是同一件事。但我不会寻找==我会做一些像
elementHeight这样草率的事情,我会在elementHei之间得到17个像素的差异完全向下滚动时的ght和scrollPosition。是否认为是滚动条高度+一些边框?是否有水平滚动条?听起来与滚动条高度差不多。是的,它似乎是滚动条高度。我将发布另一个问题,以了解如何在任何浏览器上获得此滚动条高度。Safari:16px,IE7:20px…就我个人而言,我只是计算20个额外的数字,或者你可以检查浏览器,然后给出正确的数字。不那么简单,取决于操作系统上使用的主题。