6

以下代码用于检测用户是否滚动到页面底部并且它可以工作。

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

问题:

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

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

或者

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

3 回答 3

15

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

于 2013-03-28T19:33:28.680 回答
3

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

于 2013-03-28T19:35:53.777 回答
0

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

scrollTop窗口高度相比,仅意味着您向下滚动了一屏,而不是文档的底部。

scrollTop当窗口的底部位于文档的底部时,从文档高度中减去窗口高度可以得出将在哪里的值。

于 2013-03-28T19:34:54.743 回答