2017-04-21 158 views
0

所以我的代码应该添加一个类到一个元素,如果身体有一个特定的类是行不通的。它看起来像这样:身体hasclass不工作

if ($("body").hasClass("shifter-open")) { 
    $(".scrollheader").addClass("hovered"); 
} 

我认为它是因为jQuery的代码添加这个类(转换器开),以身体与此代码:

$(document).ready(function() { 
    $("body").addClass("shifter shifter-active"); 

    $('.shifter-handle').click(function() { 
     $("body").toggleClass("shifter-open", 1000); 
    }); 
}); 

有没有办法让我的代码工作?并可能将这两个代码合并为一个?

回答

0

假设你也想删除这个类,只是模拟身体正在做什么。您可以在.scrollheader上切换课程hovered,就像身体切换其shift-open课程一样。

$(document).ready(function() { 
    $("body").addClass("shifter shifter-active"); 

    $('.shifter-handle').click(function() {   //When shifter-handle is clicked 
     $("body").toggleClass("shifter-open");  //Toggle "shifter-open" on the body 
     $(".scrollheader").toggleClass("hovered"); //Toggle "hovered" on .scrollheader 
    }); 
}); 

此外,的toggleClass()第二参数取boolean,决定是否切换应激活。你的第二个参数1000永久为truthy,所以没有理由包含它。

+0

谢谢,它添加了hovered类,但是当用户不会在它上面移动时再次移除它。我们可以做到这一点,所以它会覆盖另一个jQuery脚本?这是应该被覆盖的脚本(我试图通过使用不拥有的类)'if(!$('body')。hasClass('shifter-open'))var $ header = $(“。scrollheader “); $ header.hover(函数(){ 如果($(窗口).scrollTop()== 0){$ header.addClass( '盘旋'); } },函数(){ 如果($ header.hasClass('hovered')){header_removeClass('hovered'); } }); }' – Greatix

+0

我不知道你的意思。在我的例子中,只需将scrollheader toggleClass更改为addClass ... – Santi

0

您的条件:

if ($("body").hasClass("shifter-open")) { 
    $(".scrollheader").addClass("hovered"); 
} 

只会进行一次评估,除非你有一个超时或间隔轮询它。更好的解决方案可能是将这两个部分合并为一个部分。如:

$(document).ready(function() { 
    $("body").addClass("shifter shifter-active"); 

    $('.shifter-handle').click(function() { 
     $("body").toggleClass("shifter-open", 1000); 
     $(".scrollheader").toggleClass("hovered"); 
    }); 
}); 

或类似的东西。您可能还想查看toggleClass的文档,因为它看起来并不需要一个整数作为第二个参数