我创建了一个菜单,如果用户单击其中一个侧面菜单项,则会显示侧面菜单和侧面菜单子项,但我遇到的问题是我的所有菜单项都是粗体被选中的孩子及其父母。
我希望我能清楚地解释清楚,
我的HTML
<div id="second-menu" class="collapse navbar-collapse menu_two">
<ul class="nav navbar-nav inside-nav">
<li class="sub_menu">
<a href="#">Section 1</a>
<ul class="sidenav_wrapper">
<li class="sidenav_item sidenavlast">
<a href="#">Section 2</a>
</li>
</ul>
</li>
<li class="sub_menu">
<a href="#">Section 3</a>
<ul class="sidenav_wrapper">
<li class="sidenav_item">
<a href="#">Section 4</a>
</li>
<li class="sidenav_active">
<a href="#">Section 5</a>
</li>
<li class="sidenav_item">
<a href="#">Section 6</a>
</li>
<li class="sidenav_item sidenavlast">
<a href="#">Section 7</a>
</li>
</ul>
</li>
<li class="sub_menu">
<a href="#">Section 8</a>
<ul class="sidenav_wrapper">
<li class="sidenav_item">
<a href="#">Section 9</a>
</li>
<li class="sidenav_item">
<a href="#">Section 10</a>
</li>
<li class="sidenav_item sidenavlast">
<a href="#">Section 11</a>
</li>
</ul>
</li>
</ul>
</div>
我的JS
$('ul.navbar-nav li').hover(
function () {
$(this).find('.sidenav_wrapper:first').css('display', 'block');
},
function () {
$(this).find('.sidenav_wrapper:first').css('display', 'none');
});
$(".sidenav_active").parent().css({
"display": "block"
});
if ($('.sidenav_active').length > 0) {
$('.sidenav_wrapper').parent().find('a').css({
"font-weight": "700"
});
}
我的CSS
.menu_two {
border-left: 16px solid #dfdfdf;
padding-left: 0;
}
.sidenav_wrapper {
background: none repeat scroll 0 0 #e7ecf5;
border-left: 6px solid #8fb8e6;
display: none;
padding: 0;
}
.active_sub_menu a{
font-weight: 700;
}
.active_sub_menu .sidenav_wrapper{
display: block;
}
.sidenav_active a{
font-weight: 700;
}
我的jsfiddle:JSFIDDLE
答案 0 :(得分:1)
答案 1 :(得分:1)
我认为你需要的是
$('ul.navbar-nav li').hover(function () {
$(this).find('.sidenav_wrapper:first').css('display', 'block');
}, function () {
$(this).find('.sidenav_wrapper:first').css('display', 'none');
});
$(".sidenav_active").parent().css({
"display": "block"
});
$('.sidenav_active').closest('.sub_menu').find('a').css({
"font-weight": "700"
});
演示:Fiddle
答案 2 :(得分:0)
这是由你的js:
引起的pointPlacement
正在说;
如果你的css中有side_active类,则选择所有sub_wrapper元素并选择所有子元素,给它们一个700的字体权重。
我无法建议此代码要执行的操作,但要删除它并修复&#39;你的问题。
如果您希望将此作为“活跃的”活动。相反,您可能希望查看类似addClass和removeClass函数的内容。
答案 3 :(得分:0)
这是因为下面的代码块:
if ($('.sidenav_active').length > 0) {
$('.sidenav_wrapper').parent().find('a').css({
"font-weight": "700"
});
}
如果我正确理解您的意图,则应将代码更改为以下内容:
$('.sidenav_active').closest('.sub_menu').children('a').css({
"font-weight": "700"
});
演示:http://jsfiddle.net/hazzik/hzyp66br/
或使用:has()
和>
选择器的组合:
$('.sub_menu:has(.sidenav_active) > a').css({
"font-weight": "700"
});