Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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 &引用;。hasClass“;if语句不起作用_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript &引用;。hasClass“;if语句不起作用

Javascript &引用;。hasClass“;if语句不起作用,javascript,jquery,html,css,Javascript,Jquery,Html,Css,以下工程: $(document).ready(function() { if ($("#navbar-main").hasClass('affix')) { $(".navbar-brand img").attr('src','second.jpg'); } else { $(".navbar-brand img").attr('src','images/logo.png'); } }); 如果在scroll上添加/删除

以下工程:

$(document).ready(function() {
       if ($("#navbar-main").hasClass('affix')) {
          $(".navbar-brand img").attr('src','second.jpg');
    }
    else {
       $(".navbar-brand img").attr('src','images/logo.png');
    }
});

如果在scroll上添加/删除该类,则需要将代码放入
滚动
回调中,并在添加/删除该类后运行(如果更改基于该类)<代码>就绪仅在加载和解析页面时运行一次

例如,您可以这样做:

   $(window).scroll(function (){
       var navscroll = $(window).scrollTop();
       if(navscroll >= 50) {
          $(".navbar-brand img").attr('src','second.jpg');
    }
    else {
       $(".navbar-brand img").attr('src','images/logo.png');
    }
});
…但只有当您知道执行类更新的代码已经注册了它的
滚动
处理程序时(因为处理程序是按顺序执行的,所以如果它在上面的代码运行之前已经注册了,那么您的代码将在之后注册)。如果您不知道这一点,您需要做一些事情来确保在类更新之后调用
updateLogo


根据您的评论:

我不想让它工作使用滚动,但当类改变

没有“课上更换”活动。您必须确定导致类更改的原因,然后触发任何更改。或民意测验(blech)。:-)

或者做一些理性的事情,使用CSS,而不是为自己做更多的工作。:-)


…其中,
img class=“normal”
images/logo.png
图像,
img class=“attached”
second.jpg
图像。

您何时调用
logochange
?@Ashishsah不鼓励在第三方网站上托管代码。人们应该使用内置于问题中的代码片段功能。当然,这可以通过CSS来实现,根据父项的,显示/隐藏相应的img。粘贴。@Ashishsah:问题的全部内容必须在问题中,而不仅仅是链接。链接会腐烂,使得问题及其答案对未来的人们来说毫无用处,人们不应该去非现场帮忙。建议非现场位置的问题是人们忽略了重要代码。几乎在所有情况下(表单和web存储是例外),都可以在一个代码段中完成;在不可能的情况下,完整的代码应该包含一个可选链接,指向像JSFIDLE这样的大型站点上的示例。通常这是不必要的,代码片段就足够了。ready的回调只在DOM完全构建时计算一次,所以测试hasClass测试只执行一次,而不是在类更改时。我想他正在这样做明白了,我对Java脚本不太了解,如果你明白我想做什么,你能帮我找到正确的代码吗?@Ashishsah,是的,你是对的,兄弟,我不想用scroll让它工作,但是当changess@AdarshGurjar这只能通过收听任何事件来完成,这里滚动事件是最简单的方式…我认为您应该使用that@AdarshGurjar当前位置没有“类更改”事件。您必须确定导致类更改的原因,然后触发任何更改。或者做一些合理的事情,使用CSS,而不是为自己做更多的工作。:-)
   $(window).scroll(function (){
       var navscroll = $(window).scrollTop();
       if(navscroll >= 50) {
          $(".navbar-brand img").attr('src','second.jpg');
    }
    else {
       $(".navbar-brand img").attr('src','images/logo.png');
    }
});
function updateLogo() {
    if ($("#navbar-main").hasClass('affix')) {
          $(".navbar-brand img").attr('src','second.jpg');
    }
    else {
       $(".navbar-brand img").attr('src','images/logo.png');
    }
}
$(updateLogo);
$(window).on("scroll", updateLogo);
img.affixed {
    display: none;
}
.affix img.normal {
    display: none;
}
.affix img.affixed {
    display: inline;
}