Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 窗口滚动功能不工作_Javascript_Jquery_Html - Fatal编程技术网

Javascript 窗口滚动功能不工作

Javascript 窗口滚动功能不工作,javascript,jquery,html,Javascript,Jquery,Html,我正在写一个博客,试图使用$(window).scroll(function()),但有什么东西阻止了它的工作 当用户向下滚动时,我尝试将名为scrolled的类添加到body中。有什么想法会阻止它正常工作吗?控制台不会给出任何错误 JS 现场预览 您的函数接受一个$参数,但您没有传入任何内容,因此它会被覆盖,您应该这样做: $(document).ready(function() { $(window).scroll(function() { var scrol

我正在写一个博客,试图使用
$(window).scroll(function()
),但有什么东西阻止了它的工作

当用户向下滚动时,我尝试将名为
scrolled
的类添加到body中。有什么想法会阻止它正常工作吗?控制台不会给出任何错误

JS

现场预览


您的函数接受一个
$
参数,但您没有传入任何内容,因此它会被覆盖,您应该这样做:

$(document).ready(function() {
    $(window).scroll(function() {    
        var scroll = $(window).scrollTop();

        if (scroll >= 100) {
            $("body").addClass("scrolled");
        } else {
            $("body").removeClass("scrolled");
        }
    });
});
更好的JS:

$(function() {
    $(window).on('scroll', function() {  
        $('body').toggleClass('scrolled', $(this).scrollTop() >= 100);
    });
});

在您的网站上,我看不到与
相关的css。即使我通过控制台应用它,也不会在任何地方滚动

这里有一个有效的速记解决方案

另外,如果您使用的是jQueryUI,那么您可以使用
switchClass()
为类更改过程添加一点动画

var scroll = ($(this).scrollTop() >= 100) ? $("body").switchClass("default","scrolled", 1000) : $("body").switchClass("scrolled","default", 1000);

*注意:也不要忘记在文档中包含jQuery/jQueryUI库。

删除溢出:将自动属性添加到容器中。这将起作用。

从函数中删除
$
。如果要保护函数,请编写
(函数($){…})(jQuery)
@mdesdev谢谢,但它对我不起作用。它太短了,我喜欢:)嘿,为什么要用空括号关闭文档准备就绪(
>)()?@AlienWebguy似乎不适合我,尽管它看起来很有效。我把$(function(){$(window).on('scroll',function(){$('#sb site').toggleClass('scrolled',$(this.scrollTop()>=100);});})放在('scroll',function(){$('sbsite');在我的JS上,但仍然没有工作。那个#sb站点是处理背景颜色的包装器。@mdesdev打字错误,我的错。Aleksi,现在试试,好像不行。我使用名为#sb site的包装器,这可能是问题所在吗?我试过了。卷轴成功了,但我不需要这样的行为。似乎不起作用。我使用名为#sb site的包装器,这可能是问题所在吗?我试过了。卷轴成功了,但我不需要这样的行为。
$(function() {
  $(window).scroll(function() {    
    var scroll = ($(this).scrollTop() > 100) ? $("body").addClass("scrolled") : $("body").removeClass("scrolled");
  });
});
var scroll = ($(this).scrollTop() >= 100) ? $("body").switchClass("default","scrolled", 1000) : $("body").switchClass("scrolled","default", 1000);