jQuery无法选择带hasClass(“open”)的元素或者是(“:visible”)

时间:2015-05-20 21:41:52

标签: jquery

我似乎无法选择基于hasClass(“open”)的元素或者是(“:visible”。

<ul class="menu">
    <li class="nav-item">
        <a href="about">About</a>
        <div class="sub-nav-wrapper"> 
            <ul class="sub-menu">
                <li>...</li>
            </ul>
        </div>
    <li>...</li>
</ul>
if ($('ul.menu li div').hasClass("open")) {
    $(this).parent().children("a").css('background', '#666');
}

当鼠标悬停在“关于”链接上时,子菜单显示如下,并且使用“sub-nav-wrapper”类将一个类添加到div中。这个班叫做“开放”。但是当用户将光标移动到子菜单区域时,主链接(“关于”)会丢失其悬停颜色。所以我试图用JS把它带回来。它不起作用,我也尝试.is(":visible")并使用警报来检查它,但每次都会弹出警报,甚至在我做任何事情之前,只是在页面加载时。

2 个答案:

答案 0 :(得分:0)

尝试添加一个点以打开... - &gt; hasClass(&#39; .open&#39;)

此致

答案 1 :(得分:0)

这里有几个问题。首先,像这样的if语句只会被执行一次,所以它不会作为一个监听器。其次,.hasClass()只返回一个布尔值,而不是一个DOM元素,因此this语句中的if不是你想象的那样。

我会使用mouseover / mouseout事件处理程序处理此问题。尝试:

$('ul.menu li div').mouseover(function(e) {
    $(this).parent().children("a").css('background', '#666');
}).mouseout(function(e) {
    $(this).parent().children("a").css('background', '#original-bg-color');
});

您需要使用导航链接的默认背景颜色替换"#original-bg-color"。希望有所帮助!