2014-10-28 80 views
1

如何關閉我的DropDown菜單,如果我點擊外部下拉菜單的身體元素。如何隱藏下拉菜單,如果我點擊身體任何元素?

請給我建議。 我的代碼是

$(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>

回答

2

您可以將一個事件處理程序附加到將隱藏下拉菜單的文檔。

你會需要停止該事件上的菜單項本身時,點擊冒泡:

$(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

0

這將檢查如果你點擊的元素上,只需將您的選擇( 「最」 父)和 「隱藏」 功能:

$(document).mouseup(function (e) 
{ 
    var your_element = $('#your_element'); 
    if(container.has(e.target).length === 0) 
    { 
     //hide your element 
    } 
}); 
相關問題