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。。。这将强制所有新页面加载在加载时粘贴到顶部@菲尔:“要保持的初始位置”?我不这么认为。->«这甚至可以在初始加载时工作,我不希望它工作»