1 回答
TA贡献1856条经验 获得超11个赞
通过使用 jQuery,您可以绑定到文档单击事件,并在单击的元素不是容器本身或 div 元素的后代时隐藏 div 容器。
var container = $("#sub-menu");
if (!container.is(event.target) && !container.has(event.target).length) {
container.hide();
}
如果您想隐藏该容器而不测试容器本身或 div 元素的后代,只需删除条件并简单地使用container.hide();.
另外,不要在 CSS 中设置,而是display: none;手动sub-menu设置,这样您就可以sub-menu从第一次单击时进行切换。
看看下面的片段:
var x = document.getElementById("sub-menu");
x.style.display = "none";
$(document).click(function (evt) {
if ($(evt.target).is('#main-menu')) { // control click event if it's main-menu
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
else {
var container = $("#sub-menu");
if (!container.is(event.target) && !container.has(event.target).length) { // if you don't want that remove the condition and write container.hide(); only
container.hide();
}
}
});
#main-menu {
display: inline-block;
height: 20px;
width: 100px;
background: blue;
padding: 5%;
}
#sub-menu {
display: inline-block;
height: 50px;
width: 50px;
background: red;
}
<script src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<div id="main-menu">Main menu</div>
<div id="sub-menu" class="sub-menu-class">Sub menu</div>
添加回答
举报