Я выводя, что вы заселять свои выпадающие элементы динамически с помощью AJAX или на стороне сервера.
Если это так, то вы можете использовать небольшой CSS/Javascript, чтобы скрыть пустые меню. Но вам нужно позаботиться о нескольких причудах.
Сначала убедитесь, что ваша разметка выглядит следующим образом:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Contact Us <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu"></ul>
</li>
Важно: Обратите внимание, что есть нет белого пространства между вашим ul.dropdown-menu
начальным и конечным тегами. Это связано с тем, что селектор CSS :empty
не будет работать, если есть пробел или разрыв строки.
Теперь, если в базе данных есть пункты меню, вы можете заполнить их внутри ul.dropdown-menu
как li
. Если предметов нет, то он останется пустым. На этом этапе у вас будет небольшое раскрывающееся меню, которое будет пустым и покажет каретку.
Немного CSS может сделать пустую выпадающий уйти:
ul.dropdown-menu:empty {
display: none;
}
Но, поскольку CSS не имеет обратный смежный родственный комбинатора, мы не можем предназначаться каретки. Таким образом, мы должны прибегнуть к небольшой JavaScript/JQuery:
$("ul.dropdown-menu:empty").prev("a").children("span.caret").first().hide();
Вы можете выбрать оба реализованы только в JQuery, если вы хотите. Это просто для того, чтобы дать вам представление.
Сложите свою настройку сейчас, и она выглядит примерно так, как этот сниппет. Пожалуйста, просмотрите его в полноэкранном режиме, чтобы предотвратить свертывание.
Отрывок:
$("ul.dropdown-menu:empty").prev("a").children("span.caret").first().hide();
ul.dropdown-menu:empty {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
<nav class="navbar navbar-default" role="navigation">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Contact Us <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu"></ul>
</li>
</ul>
</nav>
С чем это связано? Angularjs? – Abhitalks
На самом деле, если вы работаете с AngularJS, ui.bootstrap от Angular UI может быть лучшим способом интеграции Twitter Bootstrap. См. Http://angular-ui.github.io/bootstrap/ –