单击后隐藏导航菜单

Hide navigation menu after click

本文关键字:菜单 导航 隐藏 单击      更新时间:2023-09-26

我构建了一个运行良好的导航菜单,但在鼠标移出下拉菜单之前,它一直保持打开状态。

我已经有一个功能,当我们在菜单中选择某个内容时,它会在另一个<div>(otherDiv(中显示内容,同时我正试图让它隐藏菜单。

function go(obj) {
  var page = obj.href;
  document.getElementById('otherDiv').innerHTML = '<img src="' + page + '"></img>'
  return false;
  document.getElementById('menu1').style.display = "none";
  document.getElementById('menu2').style.display = "none";
  document.getElementById('menu3').style.display = "none";
  document.getElementById('menu4').style.display = "none";
  document.getElementById('menu5').style.display = "none";
  document.getElementById('menu6').style.display = "none";
}
    .drpbtn {
	display: inline-block;
	color: #ffffff;
	text-align: center;
	padding: 12px 25px;
	list-style-type: none;
	width: auto;
	margin: 0;
	background-color: #403e3e;
	color: #ffffff;
	float: left;
	font-family: arial;
	font-size: 14px;
}
.drpbtn:hover {
	background-color: #00b3be;
}
.drpbtn:hover .dropdown-content {
	display: inline-block;
}
.dropdown-content {
	display: none;
	list-style-type: none;
	position: absolute;
	background-color: #fafafa;
	width: 290px;
	color: #000000;
	text-align: left;
	margin-left: -4.7em;
	margin-top: 0.89em;
}
.dropdown-content li:hover {
	background-color: #e1e1e1;
}
.dropdown-content li {
	display: block;
}
.li-drop {
	display: inline-block;
	color: #000000;
	text-align: left;
	padding: 11px 13px;
	text-decoration: none;
	margin: auto;
}   
<div id="menu">
  <ul>
    <li class="drpbtn">Menu 1
      <ul id="menu1">
        <div class="dropdown-content">
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 1</div>
            </a>
          </li>
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 2</div>
            </a>
          </li>
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 3</div>
            </a>
          </li>
        </div>
      </ul>
    </li>
    <li class="drpbtn">Menu 2
      <ul id="menu2">
        <div class="dropdown-content">
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 1</div>
            </a>
          </li>
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 2</div>
            </a>
          </li>
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 3</div>
            </a>
          </li>
        </div>
      </ul>
    </li>
    <li class="drpbtn">Menu 3
      <ul id="menu3">
        <div class="dropdown-content">
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 1</div>
            </a>
          </li>
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 2</div>
            </a>
          </li>
          <li class="li-drop">
            <a href="url" onclick="return go(this);">
              <div class="div-drop">Choice 3</div>
            </a>
          </li>
        </div>
      </ul>
    </li>
  </ul>
</div>

你能帮我修一下吗?

function go(obj) {
  var page = obj.href;
  document.getElementById('otherDiv').innerHTML = '<img src="' + page + '"></img>'
  document.getElementById('menu1').style.display = "none";
  document.getElementById('menu2').style.display = "none";
  document.getElementById('menu3').style.display = "none";
  document.getElementById('menu4').style.display = "none";
  document.getElementById('menu5').style.display = "none";
  document.getElementById('menu6').style.display = "none";
  return false;
}

我相信你回来的地方不对。如果您在函数的中间返回,那么之后将不会执行任何操作。你的代码应该和我上面的一样。

好吧。。。如果您使用的是jquery,这里是一个如何在菜单外单击一次后隐藏导航菜单的示例。只需使用id="menu"class="menu"添加到您的<div>中,尝试该示例并基于父类名称构建您自己的逻辑。。。

<script>
    $(document).click(function (e) {
        var $e = $(e.target);
        if (!$e.parents().hasClass('menu')) {
           $('.menu').css({ 'display': 'none' });
        }
    });
</script>