У меня почти есть вложенное меню Bootstrap, работающее именно так, как я хочу.Bootstrap Вложенные Navbars - контроль над «активным» классом
меню на двух уровнях. В верхней части находятся основные категории меню, нижние подкатегории. Выбор основного меню приведет к тому, что этот заголовок меню активен и откроет соответствующую подкатегорию, при этом в данный момент не будет выбрана подкатегория. Когда пользователь выбирает подкатегорию [например, они выбирают О 2 ниже], тогда этот элемент меню выбран.
Моя проблема заключается в том, что когда пользователь делает это, элемент основной категории отменяется, и я не хочу, чтобы это было.
У меня есть код JQuery, который, я думаю, я могу использовать для управления полностью добавлением и удалением активного класса, однако Bootstrap, кажется, делает эту форму мне.
См. Мой fiddle..
//get parent click menu
$('.parentMenu li a').click(function() {
//compute the tag for the elment that was selected
sel = $(this)[0].toString();
lgt = sel.length;
tag = sel.substring(lgt - 3,lgt);
tt = $(".childMenu").removeClass("show");
$(this).addClass('active');
var subMenu = $(tag + "S");
subMenu.addClass("show");
})
$('.parentMenu').click(function() {
//$(".nav").find(".active").removeClass("active");
})
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">Multi-Layer Menu</a>
<ul class="nav navbar-nav pull-left">
<li class="active"><a href="#T1">Home</a></li>
</ul>
</div>
<div class="collapse navbar-collapse parentMenu">
<ul class="nav navbar-nav">
<li><a href="#T1">Sub Menu 1</a></li>
<li><a href="#T2">Sub Menu 2</a></li>
<li><a href="#T3">Sub Menu 3</a></li>
<li><a href="#T4">Sub Menu 4</a></li>
</ul>
</div>
<div id="T1S" class="collapse childMenu">
<ul class="nav navbar-nav">
<li><a href="#">Home 1</a></li>
<li><a href="#about">About 1</a></li>
<li><a href="#contact">Contact 1</a></li>
</ul>
</div>
<div id="T2S" class="collapse childMenu">
<ul class="nav navbar-nav">
<li><a href="#">Home 2</a></li>
<li><a href="#about">About 2</a></li>
<li><a href="#contact">Contact 2</a></li>
</ul>
</div>
<div id="T3S" class="collapse childMenu">
<ul class="nav navbar-nav">
<li><a href="#">Home 3</a></li>
<li><a href="#about">About 3</a></li>
<li><a href="#contact">Contact 3</a></li>
</ul>
</div>
<div id="T4S" class="collapse childMenu">
<ul class="nav navbar-nav">
<li><a href="#">Home 4</a></li>
<li><a href="#about">About 4</a></li>
<li><a href="#contact">Contact 4</a></li>
</ul>
</div>
</div>
</div>
Глеб, это нарушает некоторые другие вещи. Я хочу, чтобы оба уровня работали следующим образом: когда пользователь выбирает вкладку, на этом уровне другие вкладки становятся неактивными, а выбранный становится активным. Выбор на одном уровне не влияет на активный уровень других уровней. –
Глеб, спасибо огромное. Это отлично поработало. Я добавил к вашему коду одну вещь, которая должна была активировать выбранное меню в подменю. Это было довольно легко сделать, учитывая ваш код. Пожалуйста, найдите мой код при загрузке. http://www.bootply.com/zlhsWrzoqy –
@BryanSchmiedeler Рад помочь. Ваш код работает хорошо. Также вы можете добавить '$ ('. ChildMenu .active'). RemoveClass ('active');' строка в первую часть кода после '$ ('. Navbar-header .active'). RemoveClass ('active'); 'line. –