jQuery基于另一个元素的类更改css

时间:2015-01-08 20:00:32

标签: jquery css settimeout event-listener

我有这个代码,它会检查一个类并根据该类是否存在来更改CSS。然而,它以这种方式保持CSS,具有37px的上边距。如果已删除Class并重新更改CSS,我将如何再次检查?

function checkForStickyClass()
{
    if ($('.sticky-wrapper').hasClass('is-sticky'))
        $('#mobile-menu-wrap').css('top','37px');

    else
        setTimeout(checkForStickyClass, 100);
}

$(checkForStickyClass);

我尝试修改

function checkForStickyClass()
{
    if ($('.sticky-wrapper').hasClass('is-sticky'))
        $('#mobile-menu-wrap').css('top','37px');

    else if
        (!$('.sticky-wrapper').hasClass('is-sticky'))
        $('#mobile-menu-wrap').css('top','0');
    else
        setTimeout(checkForStickyClass, 100);
}

$(checkForStickyClass);

现在这不起作用,因为它始终保持0px。显然我在这里有一些逻辑错误。请帮忙

2 个答案:

答案 0 :(得分:1)

您需要每次都设置超时,因此else前面没有setTimeout

什么改变了你的课程?您是否可以使用该代码来更改#mobile-menu-wrap的样式?

答案 1 :(得分:0)

我明白了!这是工作代码,thx到Alex

function checkForStickyClass()
{
    setTimeout(checkForStickyClass, 100);
    if (jQuery('.sticky-wrapper').hasClass('is-sticky'))
        jQuery('#mobile-menu-wrap').css('top','37px');

    else if (!jQuery('.sticky-wrapper').hasClass('is-sticky'))
        jQuery('#mobile-menu-wrap').css('top','0px');
}

jQuery(checkForStickyClass);