如果li hasClass addClass到另一个div

时间:2014-02-03 12:17:20

标签: javascript jquery navigation addclass

当我向下滚动时,通过添加类(.fix)来修复我的导航。它具有以下结构:

<div class="navigation-holder fix">
    <div>
        <nav id="navigation">
            <ul id="main-nav">
                <li class="menu-item-93" />
                <li class="menu-item-95" />
                <li class="menu-item-94" />
                <li class="menu-item-96" />
                <li class="menu-item-97" />
                <li class="menu-item-98" />
            </ul>
        </nav>
    </div>
</div>

li元素在活动时自动获得类(.act)。

这是固定导航的代码。

$("document").ready(function (jQuery) {
    var nav = $('.navigation-holder');
    $(window).scroll(function () {
        if ($(this).scrollTop() > 125) {
            nav.addClass("fix");
        } else {
            nav.removeClass("fix");
        }
    });
    if ($(".menu-item-95").hasClass("act")) {
        $(".fix").addClass("darkmenu")
    };
});

如果li(95,96,98)有类(.act),我正在尝试将另一个类(.darkmenu)添加到div(.fix),但它不起作用...

2 个答案:

答案 0 :(得分:7)

将if条件放在滚动事件处理程序中,否则只在加载dom元素时执行一次。

$(document).ready(function(jQuery) {
    var nav = $('.navigation-holder');
    $(window).scroll(function() {
        if ($(this).scrollTop() > 125) {
            nav.addClass("fix");
        } else {
            nav.removeClass("fix");
        }
        if ($(".menu-item-95").hasClass("act")) {
            $(".fix").addClass("darkmenu")
        }
    });
});

""

不需要document

答案 1 :(得分:0)

我认为你应该在另一个班级和准备好的回调中做到这一点

$(document).ready(function(){
    if ( $(".menu-item-95").hasClass("act") ) {
        $(".navigation-holder").addClass("darkmenu")};
    }
});

嵌套它会使脚本在每个滚动步骤中检查它,我相信作者打算检查一次并在用户在特定页面上时更改菜单外观。