我用Bootstrap 4创建了一个菜单。这是HTML代码:
{% block head %}
<nav{{ navbar_attributes }}>
{% if container_navbar %}
<div class="container">
{% endif %}
{% if page.navigation_collapsible_first %}
<div class="collapse-navbar-first">
<div class="collapse bg-light navbar-collapse" id="CollapsingNavbarFirst">
{{ page.navigation_collapsible_first }}
</div>
</div>
{% endif %}
{{ page.navigation_menu_first }}
{{ page.navigation_notification_first }}
{{ page.navigation_logo }}
{{ page.navigation_notification_second }}
{{ page.navigation_menu_second }}
{% if page.navigation_collapsible_second %}
<div class="collapse-navbar-second">
<div class="collapse bg-light navbar-collapse" id="CollapsingNavbarSecond">
{{ page.navigation_collapsible_second }}
</div>
</div>
{% endif %}
{% if container_navbar %}
</div>
{% endif %}
</nav>
{% endblock %}
我希望在外部单击时关闭菜单。它可以与下面的JS代码一起使用,但是当我单击它时也会关闭。仅当我在外面单击时,它才必须关闭:
$(document).click(function (event) {
if (!$(event.target).closest('#CollapsingNavbarFirst').length) {
$('.navbar-collapse').collapse('hide');
}
if (!$(event.target).closest('#CollapsingNavbarSecond').length) {
$('.navbar-collapse').collapse('hide');
}
});
这是我网站上要测试的页面。在右上角的菜单(过滤器框)中,当您从下拉菜单中选择一个选项时,它将关闭。如果单击菜单中的空白,它将关闭。
答案 0 :(得分:0)
保持简单:如果要在 .navbar-折叠外部单击时关闭 .navbar-折叠,只需写下即可。
/// When you click everywhere in the document
$(document).click(function (event) {
/// If *navbar-collapse* is not among targets of event
if (!$(event.target).is('.navbar-collapse *')) {
/// Collapse every *navbar-collapse*
$('.navbar-collapse').collapse('hide');
}
});
您甚至不需要使用ID
答案 1 :(得分:0)
document.addEventListener("click", function(e){
x = e.clientX;
y = e.clientY;
var elementMouseIsOver = document.elementFromPoint(x, y);
if(elementMouseIsOver.id=="menu"){
console.log("menu");
}
else{
console.log("not menu");
}
});
#menu{
width:100px;
height:100px;
background-color:red;
}
.test{
width:300px;
height:300px;
background-color:blue;
}
<div class="test">
<div id="menu"></div>
</div>