【问题标题】:Scrolltop global variable not updating on scrollScrolltop 全局变量未在滚动时更新
【发布时间】:2017-10-18 15:53:25
【问题描述】:

已经搞砸了一段时间,但我似乎无法在 window.scroll 函数之外访问我的 scrollTop 变量。

我显然可以将我的代码放在scroll 函数中。但是,每次滚动时都会读取我的代码,这是我不想要的。我想检查 scrollTop 是否大于 50(例如)然后运行几行代码并继续。

我想知道用户在我的页面上滚动了多少。这就是 scrollTop 函数的作用。但是我希望能够检查滚动函数之外的 scrollTop 变量。虽然,由于某种原因它不起作用。无论有无 document.ready。

到目前为止,这是我的代码:

    var scrollTop = $(window).scrollTop();

    $(window).scroll(function(){
        scrollTop = $(window).scrollTop();
    });
    
    $('.label').html(scrollTop + 'px');

【问题讨论】:

  • 什么是 flight_plane_pos...& 它来自哪里?
  • 这是我的变量之一。我稍微缩短了我的代码,以便更清楚地了解我想要实现的目标。我已经编辑了我的原始帖子。

标签: javascript jquery scroll global-variables scrolltop


【解决方案1】:

如果我的理解正确,您希望在每次窗口滚动超过 50 像素时执行一次操作。

您应该跟踪一个跟踪状态的 scrolledPast 变量,而不是在“全局”(在上面 docReady 的情况下)级别跟踪您的 scrollTop滚动并在 scroll 回调中更新。如果 scrolledPast 变量为 false,但您的 scrollTop 大于 50,请设置变量并运行您的代码。下次运行 scroll 回调时(可能很快),scrolledPast 变量将设置为 true,因此不要运行代码。当您向上滚动到 50 以下时,重置 scrolledPast 变量。

代码时间:

var scrolledPast = false; //global flag
$(function() { //doc ready
    $(window).on('scroll', function() { //let's handle this, eh?
        var scrollTop = $(this).scrollTop();
        if (scrollTop > 50 && !scrolledPast) { //just scrolling past 50
          scrolledPast = true;
          myCode();
        }
        else if (scrollTop <= 50) { //reset our flag
          scrolledPast = false;
        }
    });
 });
 
 function myCode() {
    //scrolled past 50, do stuff!
    console.log('You did it!');
 }
div {
  height: 2000px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  This is gonna be yuuuuuggggeeee!
</div>

【讨论】:

  • 首先,谢谢!这几乎就是我想要的。这将允许我现在继续工作。但是,我想在整个网站的不同高度上执行更多操作。它可以工作,但我觉得它很快就会变得一团糟。是否可以按照我在原始帖子中制作脚本的方式使其工作?我需要知道 scrollTop 在滚动功能之外是什么。所以.. ScrollTop 每次滚动都会更新,不是吗?每次scrollTop 获取更新,都应该在scrollTop 变量中更新,但由于某种原因它不起作用。知道为什么吗?
  • 您可能需要添加更多代码以明确您要执行的操作。从您上面给出的示例中,您在滚动处理程序中设置了 scrollTop 变量后没有使用它。它使用的一个地方,$('.label').html(scrollTop + 'px');,只在文档准备好时运行一次。如果这是您在页面滚动时尝试更新的内容,我会查看CSS position: fixed
  • 感谢您的努力。不幸的是,固定位置与我想要的完全不同。我想知道用户在我的页面上滚动了多少。这就是 scrollTop 函数的作用。但是我希望能够检查滚动函数之外的 scrollTop 变量。虽然,由于某种原因它不起作用。无论有无 document.ready。我希望这次更清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多