【问题标题】:Can't get scroll position无法获取滚动位置
【发布时间】:2015-10-30 06:42:07
【问题描述】:

我有一个页面,其正文正在滚动。也就是说,body 上的滚动事件监听器可以工作。但是,windowdocument 上的滚动监听器不会触发。

问题是,即使 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


【解决方案1】:

有一个高度:100% 来自另一个 css 文件。通过设置高度解决它:自动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 2011-04-08
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2015-10-21
    • 2011-11-01
    • 2019-04-09
    相关资源
    最近更新 更多