jQuery 根据另一个元素的 class 更改 css

jQuery change css based on class of another element

我有这段代码,它会检查 class 并根据 class 是否存在来更改 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。显然我这里有一些逻辑错误。请帮助

每次都需要设置Timeout,所以setTimeout前面没有else

是什么改变了您的 class?您能否使用该代码也更改 #mobile-menu-wrap 的样式?

我明白了!这是工作代码,谢谢 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);