У меня есть простая навигационная панель:
<nav class="navbar navbar-expand-lg">
<button onclick="myFunction()" class="navbar-toggler" type="button" data-toggle="collapse" id="navBtn" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="ion-android-menu"></span> </button>
<div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent">
<ul class="navbar-nav">
<li>
<a class="nav-link" href="@Url.Action("Index", "Home")"><i class="fa fa-home fa-1x"> Home</i> </a>
</li>
</ul>
</div>
</nav>
И 2 сценария:
<script>
$('.navbar-collapse a').click(function () {
$(".navbar-collapse").collapse('hide');
$("#navBtn").attr('aria-expanded', false);
});
</script>
<script>
$(document).mouseup(function (e)
{
var container = $(".collapse");
if (!container.is(e.target) // if the target of the click isn't the container...
&& container.has(e.target).length === 0) // ... nor a descendant of the container
{
// $(".collapse").slideUp();
// remove class
$("#navBtn").attr('aria-expanded', false);
$("#navbarSupportedContent").removeClass("show");
}
});
</script>
Что мне нужно, так это бутерброд Меню (как они называют эти 3 горизонтальных сложенных полосы) закрывается при нажатии на X (после его открытия). Он открывается нормально, и когда нажимается везде за пределами меню, он закрывается. Но при нажатии на X он закрывается, но сразу же снова открывается ...
Что я могу сделать, чтобы достичь этого? У меня нет ошибок в консоли (элемент проверки), и я попытался настроить класс add / remove и проанализировал поведение в элементе проверки, но я не знаю, почему это происходит ... Спасибо!
EDIT: Как подсказывает DCR, я знаю, что использовал функцию Toggle (), но я все еще не могу заставить ее работать, она либо закрывается и открывается, либо закрывается, но X остается вместо переключения на полосы или смесь этих комбинаций ...
У меня есть это сейчас:
<script>
$(document).mouseup(function (e) {
var container = $(".collapse");
if (!container.is(e.target) // if the target of the click isn't the container...
&& container.has(e.target).length === 0) // ... nor a descendant of the container
{
// remove class
$("#navbarSupportedContent").removeClass("show");
$("#navBtn").attr('aria-expanded', false);
}
else {
$("#navbarSupportedContent").toggle();
}
});
</script>