jQuery在滚动时添加类,但不在初始加载时添加

jQuery在滚动时添加类,但不在初始加载时添加,jquery,Jquery,我这里有一段代码,根据滚动位置添加和删除类,这甚至可以在初始加载时工作,我不希望它这样做,我如何防止呢 jQuery(window).scroll(function () { var scroll = jQuery(window).scrollTop(); console.log(scroll); if (scroll >= 100) { jQuery("#banner").addClass("sticky"); } else if (scroll == 0)

我这里有一段代码,根据滚动位置添加和删除类,这甚至可以在初始加载时工作,我不希望它这样做,我如何防止呢

jQuery(window).scroll(function () {

  var scroll = jQuery(window).scrollTop();

  console.log(scroll);

  if (scroll >= 100) {
    jQuery("#banner").addClass("sticky");
  } else if (scroll == 0) {
    jQuery("#banner").removeClass("sticky");
  }

  if (scroll > 0) {
    jQuery(".navigation-top").addClass("sticky");
  } else if (scroll == 0) {
    jQuery(".navigation-top").removeClass("sticky");
  }

});
当您刷新页面且滚动条不是0时,问题出现在初始加载上

当您刷新页面且滚动条不是0时,问题出现在初始加载上

好的。。我想到的唯一解决办法是:

加载时,您将强制scrollTop归零。
然后注册
滚动
事件处理程序

$(window).scrollTop(0);

$(window).scroll(function () {

  var scroll = $(window).scrollTop();
  console.log(scroll);

  $("#banner").toggleClass("sticky", scroll >= 100 );
  $(".navigation-top").toggleClass("sticky", scroll > 0 );
});

第二个参数是在这两种情况下都返回真/假的条件。

您可以在scroll函数中使用带有if语句的布尔变量来确定代码是否应该运行

在这里,我们通过将变量设置为true onload来禁用代码,然后在scroll中将其设置为false,从而允许函数执行

var onload_functionDisable = true;

jQuery(window).scroll(function() {

    if (onload_functionDisable == false) {
        var scroll = jQuery(window).scrollTop();

        console.log(scroll);

        if (scroll >= 100) {
            jQuery("#banner").addClass("sticky");
        } else if (scroll == 0) {
            jQuery("#banner").removeClass("sticky");
        }

        if (scroll > 0) {
            jQuery(".navigation-top").addClass("sticky");
        } else if (scroll == 0) {
            jQuery(".navigation-top").removeClass("sticky");
        }
    }
    onload_functionDisable = false;
});
编辑 前面的代码是错误的,将始终运行。因此,现在我们通过移动
onload\u functionDisable=false对其进行了改进
滚动功能的底部
。因此,在加载时,滚动功能被禁用,但一旦它跳过滚动代码,变量就会设置为false,从而启用下一个滚动事件的代码


我有一个正在工作的

您什么时候运行此代码?顶部与
}匹配的部分在哪里?
最后?我的坏消息更新了我的问题这不应该在页面加载时运行。必须有其他您没有显示的内容。jquery代码在文档就绪时将布尔值设置为false,然后设置事件侦听器以检测滚动并将该布尔标志设置为true,将代码块放入检查布尔标志的if语句中。您的逻辑顺序错误
onload\u functionDisable
在到达
if(onload\u functionDisable==false)
时总是
false
我稍微更改了我的代码,并添加了一个经过充分测试和工作的JSFIDLE。这不会使页面跳转吗?听起来OP希望保持初始位置Hew。。。这将强制所有新页面加载在加载时粘贴到顶部@菲尔:“要保持的初始位置”?我不这么认为。->«这甚至可以在初始加载时工作,我不希望它工作»