Javascript 为什么jquery addClass不能在所有选择器上工作

Javascript 为什么jquery addClass不能在所有选择器上工作,javascript,jquery,html,css,twitter-bootstrap,Javascript,Jquery,Html,Css,Twitter Bootstrap,我有这段代码,应该是改变我的引导nav从navbar静态顶部到navbar固定顶部,但我也希望它通过添加或删除class.fixed body来改变标记。这个css类负责更改填充顶部样式以允许内容显示。问题是,导航栏的位置会改变,但body标记不会添加或删除该类。此外,列表标记不受影响。我可以通过检查谷歌浏览器上的元素在导航栏上看到变化。所以,我知道部分代码是有效的。我不明白为什么其他人不 var nav = $('nav'); var body

我有这段代码,应该是改变我的引导nav从navbar静态顶部到navbar固定顶部,但我也希望它通过添加或删除class.fixed body来改变标记。这个css类负责更改填充顶部样式以允许内容显示。问题是,导航栏的位置会改变,但body标记不会添加或删除该类。此外,列表标记不受影响。我可以通过检查谷歌浏览器上的元素在导航栏上看到变化。所以,我知道部分代码是有效的。我不明白为什么其他人不

            var nav = $('nav');
            var body = $('body');
            $(window).scroll(function () {
                if ($(this).scrollTop() > nav.offset().top) {
                    nav.removeClass("navbar-static-top");
                    nav.addClass("navbar-fixed-top");
                    body.addClass('fixed-body');
                    $('li#home').removeClass('in');
                }
                else {
                    nav.removeClass("navbar-fixed-top");
                    nav.addClass("navbar-static-top");                  
                    body.removeClass('fixed-body');
                    $('li#home').addClass('in');
                }
            });

有什么想法吗?

如果剧本是从头开始的,就没有身体,所以身体是空的。在滚动处理程序中使用$body,或者使用ready来确保填充了正文。脚本位于底部,就在标记之前。我先用$body尝试了两种方法,然后用var body=$body。谢谢在我的问题中的语法错误代码通知,但不是在原始代码中。也许我在这里遗漏了什么?也许更改导航栏显示会稍微滚动文档,重新启动处理程序;使用一两个console.log来查找。或者在设置其他类之后,最后尝试执行nav命令。。。