Javascript $(窗口).scrollTop()==$(文档).height()-$(窗口).height()的含义

Javascript $(窗口).scrollTop()==$(文档).height()-$(窗口).height()的含义,javascript,jquery,html,Javascript,Jquery,Html,下面的代码用于检测用户是否已滚动到页面底部,并且是否正常工作 if($(window).scrollTop() == $(document).height() - $(window).height()){ //do something } 问题: 我不明白为什么要从文档高度中减去窗口高度,然后将其与滚动高度进行比较,以确定是否已到达页面底部。为什么不简单呢 if($(window).scrollTop() == $(document).height()){ //do something }

下面的代码用于检测用户是否已滚动到页面底部,并且是否正常工作

if($(window).scrollTop() == $(document).height() - $(window).height()){
//do something
}
问题:

我不明白为什么要从文档高度中减去窗口高度,然后将其与滚动高度进行比较,以确定是否已到达页面底部。为什么不简单呢

if($(window).scrollTop() == $(document).height()){
//do something
}


这是因为
$(window).scrollTop()返回页面顶部的位置,
$(document).height()返回页面底部的位置。因此,您需要减去窗口的高度以获得要比较的位置,因为这将为您提供当您完全滚动到底部时页面顶部的位置。

scrollTop
值永远不会与文档高度值一样高。这意味着您滚动文档,使其全部位于窗口之外

scrollTop
与窗口高度进行比较只意味着您向下滚动了一个屏幕,而不是滚动到文档的底部


当窗口底部位于文档底部时,从文档高度减去窗口高度会得到
scrollTop
的值。

$(窗口)。scrollTop()
是相对于文档的窗口顶部位置。在我现在看到的页面上,如果我滚动到最底部,那就是
1385
$(document).height()
是整个页面的高度(
1991
对我来说)$(窗口).height()是窗口(视口)的高度(
606
对我来说)。这意味着视口顶部的位置加上窗口的高度就是视口底部的位置
1385+606=1991

那么如何将它改为从窗口到特定div?将(窗口)替换为(“#滚动条”)?你能告诉我正确的语法吗,谢谢:)我相信以下是正确的,你可能想检查跨浏览器,因为我只在chrome中测试过:。基本上你做了一个非常相似的事情,但是你检查了div的scrollheight和scrolltop+innerheight。对我来说不起作用。在底部滚动:[$(文档).height(),$(窗口).height(),$(窗口).scrollTop()]是[408,408,64]。当我滚动到顶部[408,408,0]:这是当满足相等条件并追加新内容时。奇怪的当我滚动到底部时,我想添加。我只是想标记这个,以防它对其他人有帮助。此代码将在100%浏览器缩放时工作,但不一定在其他缩放级别工作。有关更多信息,请参见此处的讨论:
if($(window).scrollTop() ==  $(window).height()){
//do something
}