$(document).scrollTop()总是返回0

一旦页面的滚动位置达到一定高度,我只是试图做一些事情。 然而, scrollTop()返回0或null无论我滚动多远。 这是我用来检查scrollTop()值的帮助函数:

 $('body').click(function(){ var scrollPost = $(document).scrollTop(); alert(scrollPost); }); 

我已经试过将scrollTop()附加到$('body')$('html') ,当然还有$(window) ,但没有任何变化。

有任何想法吗?

由于某些原因,从我的html和body标签中删除“height:100%”解决了这个问题。

我希望这可以帮助别人!

我有同样的问题与滚动= 0在:

 document.body.scrollTop 

下次使用

 document.scrollingElement.scrollTop 

编辑20.10.2017:

总是是'但是',IE 11不支持scrollingElement所以使用

 document.documentElement.scrollTop 

对于那些可能和我犯同样错误的人,我只是附加一个。 我的代码如下:

 var p = $('html,body'); $( ".info" ).text( "scrollTop:" + p.scrollTop() ); 

这个代码可以在所有的浏览器上运行,除了Chrome浏览器和safari之类的webkit浏览器,因为<html>标签总是有一个scrollTop值为零或为空的。

其他浏览器忽略它,而webkit的浏览器则没有。

最简单的解决方法就是从您的代码中移除html标签et Voila:

 var p = $('body'); $( ".info" ).text( "scrollTop:" + p.scrollTop() ); 

我的解决scheme,尝试了一些以上,而不涉及改变任何CSS:

 var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() ) 

这适用于最新版本的Chrome,Firefox,IE和Edge。

有同样的问题。 scrollTop()适用于某些不是文档或正文的块。 要使这个方法工作,你应该为你的块添加高度和溢出风格:

 #scrollParag { height: 500px; overflow-y: auto; } 

接着:

 var scrolParag = document.getElementById('scrollParag'); alert(scrolParag.scrollTop); // works! 

Scroll Top对我来说总是返回0。 我正在使用它将焦点集中到页面上的特定元素。 我用另一种方法来做到这一点。

的document.getElementById( “elementID”)scrollIntoView();

在手机,平板电脑和桌面上为我工作的很好。

顺便说一下,你似乎应该使用

 $("body").scrollTop() 

代替

 $(".some-class").scrollTop 

这就是为什么我卡住了。

去除height: 100%; 从html和body标签可以解决这个问题。

原因是:

原因是你可能已经设置了100%作为html和body元素的height属性的值。 如果将html和body元素的height属性设置为100%,则它们的高度等于文档的高度。

看到这个: http : //www.mentfri.com/2017/11/jquery-scrolltop-returns-0/