javascript - 如果我单击正文任何元素,如何隐藏下拉菜单?

标签 javascript jquery

如果我单击外部下拉菜单的正文元素,如何关闭我的下拉菜单。

请给我建议。 我的代码是

$(document).ready(function(){

    $(document).on('click', '.top-nav-head>li>a',  function(){
        $(this).siblings('ul').toggle().closest('.top-nav-head>li').siblings('li').find('ul').hide();
    });

});
.top-nav-head{
  list-style-type: none;
  padding: 0;
  margin: 0;
    background:blue;
    float: left;}
.top-nav-head>li{
    
    float: left;
    position: relative;
}
.top-nav-head>li > a{
    color: #000;
      padding: 0 10px;
      display: block;
      line-height: 40px;
      font-size: 14px;
}
.top-nav-head>li > ul{
    position: absolute;
      display: none;
      top: 100%;
      left: 0;
      min-width: 140px;
      right: 0;
      list-style-type: none;
      padding: 5px 0 5px 0;
      margin: 0;
      background-color: red;
    
}
.top-nav-head>li > ul>li{
    display: block;
}
.top-nav-head>li > ul>li > a{
    display: block;
          color:@white;
          padding: 5px 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul class="top-nav-head">
          <li><a href="#">Home</a></li>
          <li class="active">
              <a href="#">Admin Module</a>
              <ul>
                <li><a ui-sref="av-kw-questions.empty">Questions</a></li>
                <li><a ui-sref="av-wbs">WBS Elements</a></li>
                <li><a ui-sref="av-lbp">Lookback planning</a></li>
                <li><a href="#">Form</a></li>
                <li><a href="#">Plan Component</a></li>
              </ul>
          </li>
          <li>
            <a href="#">Project Management</a>
            <ul>
              <li><a href="#">Link 1</a></li>
              <li><a href="#">Link 2</a></li>
              <li><a href="#">Link 3</a></li>
              <li><a href="#">Link 4</a></li>
              <li><a href="#">Link 5</a></li>
            </ul> 
          </li>
        </ul>

最佳答案

您可以将事件处理程序附加到将隐藏下拉菜单的文档。

您需要在单击菜单项本身时停止事件冒泡:

$(document).ready(function () {
    $(document).on('click', function () {
        $('.top-nav-head > li > ul').hide();
    });
    $(document).on('click', '.top-nav-head>li>a', function (e) {
        e.stopPropagation();
        $(this).siblings('ul').toggle().closest('.top-nav-head>li').siblings('li').find('ul').hide();
    });

});

JSFiddle

关于javascript - 如果我单击正文任何元素,如何隐藏下拉菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605860/

相关文章:

javascript - jquery 和 angular.js 无法在下拉列表中工作

javascript - 使用 ajax 从 mysql 添加和检索记录

javascript - 在 Django 中将输出从 javascript 发送到 html DIV

javascript - 使用 javascript 按保证顺序打开窗口

javascript - 如何对数组进行排序,但排除某些元素(保持在数组中的相同位置)

javascript - 奥杜 v16 : assets-frontend Error after uninstall custom module (migrated from v13)

javascript - 无法从 phantomjs 打开 behance.net

javascript - 获取下拉列表中选定的值

javascript - 计算图像 A 比图像 B 大多少

javascript - 使用 jQuery 将第一行添加到表中