javascript - 什么函数调用 bootstrap4 中的“navbar-toogle”按钮?
问题描述
$('#navbar-collapse').on('show.bs.collapse', function () {
$("html").click(function() {
//OPTION 1
document.getElementById("navbar-collapse").classList.remove('show');
//OPTION 2
//$('#navbar-collapse').hide();
//OPTION JAIME
//$('#navbar-collapse').collapse('toggle');
});
$('#navbar-collapse').click(function (e) {
e.stopPropagation();
});
});
.bg-ecs-white{
background: #fff !important;
}
.navbar-ecs .navbar-brand {
color: #34219e;
}
.navbar-ecs .navbar-brand:hover, .navbar-ecs .navbar-brand:focus {
color: #ff2069;
}
.navbar-ecs .navbar-nav .nav-link {
color: #34219e;
}
.navbar-ecs .navbar-nav .nav-link:hover, .navbar-ecs .navbar-nav .nav-link:focus {
color: #ff2069;
}
.navbar-ecs .navbar-nav .show > .nav-link,
.navbar-ecs .navbar-nav .active > .nav-link,
.navbar-ecs .navbar-nav .nav-link.show,
.navbar-ecs .navbar-nav .nav-link.active {
color: #00e1e1;
}
.navbar-ecs .navbar-toggler {
color: #ff2069;
border-color: #34219e;
}
.navbar-ecs .navbar-toggler-icon {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 32, 105, 0.7)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
}
/***************NAV-SUBLINK**************/
@media (min-width: 992px){
.navbar-expand-lg .navbar-nav .nav-sublink {
padding-right: .5rem;
padding-left: .5rem;
}
}
.navbar-ecs .navbar-nav .nav-sublink {
color: #ff2069;
}
.navbar-ecs .navbar-nav .nav-sublink:hover, .navbar-ecs .navbar-nav .nav-sublink:focus {
color: #ff2069;
text-decoration: none;
}
.nav-sublink, .navbar {
padding: .5rem 1rem;
}
.dropdown-menu {
background-image: linear-gradient(#fff, #c6ffff); /*to right,*/
border: none;
}
.dropdown-toggle::after,
.dropup .dropdown-toggle::after {
content: none;
}
/*botones submenú navbar*/
.btn-link {
color: #34219e;
}
.btn-link:hover {
color: #ff2069;
text-decoration: none;
}
#intro {
height: 100%;
background-color: blue;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
<html>
<head>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<nav class="navbar navbar-expand-lg bg-ecs-white navbar-ecs fixed-top scrolling-navbar">
<div class="container-fluid">
<div class="logo">
<a class="navbar-brand" href="#">LOGO</a>
</div>
<button id="btnTog" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-controls="navbar-collapse"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse" id="navbar-collapse">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="#">Home
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Sec 1</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid">
<div id="intro">
<br> <br><br> <br><br> <br>
<p class="text-white text-center">
CONDITION
the menu can only be opened with the button, to close, when the user touches outside the menu</p>
<p class="text-white text-center">1.open menu 2.touch background blue 3.open menu 4. :(</p>
<br>
</div>
</div>
</body>
</html>
当用户在特定 div 之外单击时,我试图隐藏导航栏菜单。识别div外点击的功能反应很好,但是导航栏没有再如愿的反应。
我想要做的是,当用户在 div 外部按下时,他会调用隐藏/显示导航栏菜单的相同功能。我想知道:什么函数调用bootstrap4中的“navbar-toogle”按钮?
我正在尝试所有这些选项,但我找不到关键,每个选项都会给出不同的错误。
jQuery / JavaScript
$('#navbar-collapse').on('show.bs.collapse', function () {
$("html").click(function() {
//OPTION 1
//document.getElementById("navbar-collapse").classList.remove('show'); // The "navbar-toogle" button does not respond
//OPTION 2
// $('#navbar-collapse').hide(); // Problem, the style = display: none remains active (there is no way to remove it)
//$('#navbar-collapse').css('display','none'); //I also try to assign the manual value of none first, and once it is hidden, it performs the following function (IT DOES NOT WORK)
//$('#navbar-collapse').removeAttr('style'); //If I add this line, style is completely removed, and the hide () function does not respond
//OPTION JAIME
$('#navbar-collapse').collapse('toggle'); //The menu opens always touch where the user touches. OPTION NOT VALID
// OPTION 3
//document.getElementById("btnTog").classList.add('collapsed'); //Behavior OK
//$("btnTog").attr("aria-expanded","false"); // DO NOT CHANGE THE VALUE, it always stays "true"
//document.getElementById("navbar-collapse").classList.remove('show'); // OK Behavior - Problem: If I press the Hide / Show Menu button (btnTog) It does not hide
// OPTION 4, 5, 6, ... TESTING OTHER VARIANTS without success
//$("navbar-collapse").toggle();
//$("#navbar-collapse").css("display","");
//$("#navbar-collapse").css('display','');
//$('#navbar-collapse').get(0).style.display='';
//$('#navbar-collapse').css('display',null);
//getElementById("navbar-collapse").removeAttribute("style");
//getElementById("navbar-collapse").removeAttribute("display");
//getElementById("navbar-collapse").removeAttribute("none");
//document.getElementById("#navbar-collapse").style.display = null;
//document.getElementById("navbar-collapse").classList.remove('display');
//document.getElementById("navbar-collapse").classList.add('collapsing');
});
$('#navbar-collapse').click(function (e) {
e.stopPropagation();
});
PHP/HTML
<nav class="navbar navbar-expand-lg bg-ecs-white navbar-ecs fixed-top scrolling-navbar">
<div class="container-fluid">
<div class="logo">
<a class="navbar-brand" href="#">LOGO</a>
</div>
<button id="btnTog" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-controls="navbar-collapse"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse" id="navbar-collapse">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Home
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Sec 1</a>
</li>
</ul>
</div>
</div>
</nav>
解决方案
天哪,我放了最大的脑屁。我不知道为什么当它明显崩溃时我在想下拉。
https://getbootstrap.com/docs/4.3/components/collapse/#methods
$('#navbar-collapse').collapse('hide');
这可能是您需要的。
我还创建了一个 codepen:
推荐阅读
- elasticsearch - 获取 ElasticSearch 嵌套字段中每个组的最新记录
- android - firebase phone auth sms 包含模板中不存在的额外字符
- android-studio - 应用因违反我们的恶意行为或用户数据政策以及包含安全漏洞的软件而被拒绝
- elasticsearch - 按时间过滤任何日期
- java - Jenkins-Rest - 连接到远程詹金斯客户端
- django - 如何让 Django 自己发送请求
- c++ - 如何使用 C++ 中的友元函数初始化类的私有成员?
- ios - 在 Swift 5.3 中渲染 GIF
- logstash - logstash 因“NoMethodError:nil:NilClass 的未定义方法 `multi_filter'”而崩溃
- pine-script - Pine Script:如何找到两个柱索引之间的最高柱?