我有一个菜单,可以在单击时打开子菜单部分(让我们将容器命名为:“子菜单”)。如果用户单击“子菜单”外部/页面的其余部分,我希望“子菜单”消失。
似乎已解决如何检测元素外部的点击? 但我无法从第二个最受欢迎的答案中获取如何使用代码片段:
export function hideOnClickOutside(selector) {
const outsideClickListener = (event) => {
const $target = $(event.target);
if (!$target.closest(selector).length && $(selector).is(':visible')) {
$(selector).hide();
removeClickListener();
}
}
const removeClickListener = () => {
document.removeEventListener('click', outsideClickListener)
}
document.addEventListener('click', outsideClickListener)
}
您能指导我如何使用它吗?
我进行了编辑,并包含了一个基本示例。-> 我希望子菜单在单击“白色”空间时也关闭。但不在父“主菜单”元素上。
document.getElementById("main-menu").addEventListener("click", function() {bouttonexpand('sub-menu-class')});
function bouttonexpand(id) {
var elemeacacher = document.getElementsByClassName(id);
if (elemeacacher[0].style.display != "none"){
for(var y=0;y<elemeacacher.length;y++)
elemeacacher[y].style.display = "none";
}
else {
for(var y=0;y<elemeacacher.length;y++)
elemeacacher[y].style.display = "block";
}
}
#main-menu {
display:inline-block;
height:20px;
width:100px;
background: blue;
padding: 5%;
}
#sub-menu {
display:inline-block;
height:50px;
width:50px;
background: red;
display: none;
}
<div><div id="main-menu">Main menu</div></div>
<div><div id="sub-menu" class="sub-menu-class">Sub menu</div></div>
呼唤远方
相关分类