【发布时间】:2015-10-30 06:42:07
【问题描述】:
我有一个页面,其正文正在滚动。也就是说,body 上的滚动事件监听器可以工作。但是,window 和 document 上的滚动监听器不会触发。
问题是,即使 body 正在滚动,$("body").scrollTop() 总是返回 0。我遍历了 body 的所有子代,但它们的 scrollTop() 都没有大于 0。有些子代有 overflow: hidden 但我猜这不应该影响 scrollTop。
我删除了 height: 100% 根据this 问题,我也经历了this 问题。
我确定确实是 body 通过将其溢出设置为隐藏滚动 - 滚动条消失了。而且我还尝试在应用程序中的每个容器 div 上附加滚动侦听器 - 它们都没有触发。所以确实是 body 正在滚动,出于某种奇怪的原因,jquery scrollTop() 为所有元素返回 0。
是的,我尝试访问 document.body.scrollTop - 仍然为 0。
我们将不胜感激地收到有关可能导致此问题的任何提示。卡在这里一段时间了。谢谢:)
编辑:document.documentElement.scrollTop 也返回 0。$(document).scrollTop() - 返回 0。 !DOCTYPE html 也已设置。
编辑 2: 奇怪的是,我也不能通过在 body 上设置 scrollTop 来滚动。也就是说,$('body').scrollTop(500) 什么都不做!
编辑 3:: 我的 jquery 函数:
$("body").on("scroll", function(){
var children = $("body").children();
$("body").scrollTop(800);
for(var i=0; i<children.length; i++){
if($(children[i]).scrollTop() > 0){
console.log("children: " + i);
console.log("val: " + $(children[i]).scrollTop());
}
}
});
【问题讨论】:
-
你试过
$(window).scrollTop()吗? -
显示你的 jquery 方法。
-
@Shvelo 是的。我也试过了。还是 0。
-
@JohnReyM.Baylen console.log 永远不会命中。并且 body 的 scrollTop 永远不会设置为 800。从控制台,我什至尝试了 document.body.scrollTop = 300。它仍然是 0!
-
你试过
$('html, body').scroll(function() { // code here })吗?
标签: javascript jquery html css scroll