我似乎无法选择基于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")
并使用警报来检查它,但每次都会弹出警报,甚至在我做任何事情之前,只是在页面加载时。
答案 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"
。希望有所帮助!