Jquery Scroll() 需要 2 个参数

Posted

技术标签:

【中文标题】Jquery Scroll() 需要 2 个参数【英文标题】:Jquery Scroll() requires 2 Arguments 【发布时间】:2014-06-13 07:20:14 【问题描述】:

当用户向下滚动页面时,我试图从菜单栏中删除一个类。我阅读了以下主题和文档以了解有关 jquery scroll() 的想法:

1) https://***.com/a/16391580/1050957

2) http://api.jquery.com/scroll/

这是我的代码:

var jquery = jQuery.noConflict();

jquery(document).ready(function()      
    $(window).scroll(function ()           
        if (document.body.scrollTop > 100) 
                $('#menuBar').removeClass( "nav-menu" );    
        else
                // something something              
    );        
);

上面的代码是从另一个主题的 SO 答案中摘录的(上面给出的链接)。但是当我添加该代码时,我看到:Not enough arguments to Window.scroll. 错误 $(window).scroll(function ()。我不知道为什么它期望 2 个参数,因为我在 scroll() 上阅读的文档使用没有参数。我做错了什么吗?还是 Jquery 的更高版本发生了一些变化?

我正在使用 jquery v1.11.0

【问题讨论】:

等等...我注意到我忘记将 $ 更改为 jquery。也许就是这样。我会再试一次... 【参考方案1】:

使用完整的 jquery 代码。工作示例:

#menuBar  background: yellow; width: 50px; height: 800px; 
#menuBar.nav-menu  background: red; 

<div id="menuBar" class="nav-menu"></div>
<div style="margin-bottom: 999em;"></div>

$(document).ready(function()

    $(window).on('scroll', function ()   
        var $body = $('body');
        var $target = $('#menuBar');
        if ($body.scrollTop() > 100 && $target.hasClass('nav-menu'))
                $target.removeClass("nav-menu");    
        
        else if( $body.scrollTop() <= 100 && !$target.hasClass('nav-menu') ) 
            $target.addClass('nav-menu');
        

    );

);

确保检查该类是否已添加以防止不必要的东西。

查看jsfiddle

【讨论】:

喜欢你的工作示例和首先检查类的想法。我要试试这个。谢谢@kmsdev【参考方案2】:

如果需要,您可以在滚动功能中添加一个空参数:

$(document).ready(function()      
    $(window).scroll([], function ()           
        ...
    );        
);

看看这个:

http://colorlib.com/wp/forums/topic/fix-a-bug-in-latest-version-window-scroll/

【讨论】:

以上是关于Jquery Scroll() 需要 2 个参数的主要内容,如果未能解决你的问题,请参考以下文章

jQuery事件:scroll事件

急jquery $(window).scroll失效

jQuery 事件绑定

命名空间jquery

如何使用 Infinite Scroll With Django 滚动到特定元素?

原生JS和JQuery代码编写窗口捕捉函数和页面视觉差效果(scroll()offsetTop滚动监听的妙用)