2017-04-23 51 views
0

我在導航欄中創建了一個下拉菜單,如果我有其中之一,當然沒問題,但是如果我有多個下拉菜單,則不會按預期工作。如果我點擊第一下拉,它打開,但隨後如果我還點擊第二下拉它打開後,他們兩人打開沒有關閉未點擊另一個,我該如何實現這樣的功能?單個容器上的多個下拉菜單不會互相干擾

這裏是我當前的代碼:

HTML:

<nav class="navbar"> 
    <ul class="navbar-links"> 
     <li class="navbar-link"><a href="#">Home</a></li> 
     <li class="navbar-link"><a href="#">About</a></li> 
     <li class="navbar-link dropdown"> 
      <a href="#"> 
      Projects 
      <i class="fa fa-caret-down" aria-hidden="true"></i> 
      </a> 
      <div class="dropdown-content"> 
       <a href="#">Shanary</a> 
       <a href="#">Physics Solver</a> 
       <a href="#">A simple blog</a> 
      </div> 
     </li> 
     <li class="navbar-link dropdown"> 
      <a href="#"> 
      Projects 
      <i class="fa fa-caret-down" aria-hidden="true"></i> 
      </a> 
      <div class="dropdown-content"> 
       <a href="#">Something else</a> 
       <a href="#">Text Editor</a> 
       <a href="#">A social Network</a> 
      </div> 
     </li> 
    </ul> 
</nav> 

CSS:

.navbar { 
    background-color: #3A506B; 
    border-bottom: 1px solid #cccccc; 
    box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2); 
} 
.navbar-links { 
    margin: 0; 
    font-size: 16px; 
    list-style-type: none; 
} 
.navbar-link, 
.dropdown-content a { 
    display: inline-block; 
    padding: 20px 0px; 
    transition: background 0.1s ease-in-out; 
} 
.navbar-link:hover, 
.dropdown-content a:hover { 
    background: #3f5775; 
} 
.navbar-link a { 
    padding: 20px 10px; 
    color: #5DD39E; 
    text-decoration: none; 
} 
.dropdown { 
    position: relative; 
    display: inline-block; 
} 
.dropdown-content { 
    display: none; 
    position: absolute; 
    top: 100%; 
    min-width: 160px; 
    padding: 10px; 
    z-index: 1; 
    background-color: #3A506B; 
} 
.dropdown-content a { 
    display: block; 
} 
body { 
    font-family: 'Open Sans', Arial, sans-serif; 
    background: #FFFFFF; 
    color: #16302B; 
    margin: 0px; 
} 
.visible { 
    display: block; 
} 

,到目前爲止,這是我的JavaScript文件:

$('.dropdown').click(function() { 
    $(this).find('.dropdown-content').toggleClass('visible'); 
}); 

而且,這裏的JSFiddle

的問題是,他們兩人而不關閉另一個開放,這裏是正在發生的圖像:

Image of the situation

回答

1

您將通過所有目標必須循環,以確定是否他們目前的目標還是不和刪除知名度

下面

$('.dropdown').click(function(e) { 
 
    $(this).find('.dropdown-content').toggleClass('visible'); 
 
    var that = this; 
 
    $('.dropdown').each(function() { 
 
    if (that != this) { 
 
     $(this).find('.dropdown-content').removeClass('visible'); 
 
    } 
 
    }) 
 
});
.navbar { 
 
    background-color: #3A506B; 
 
    border-bottom: 1px solid #cccccc; 
 
    box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2); 
 
} 
 

 
.navbar-links { 
 
    margin: 0; 
 
    font-size: 16px; 
 
    list-style-type: none; 
 
} 
 

 
.navbar-link, 
 
.dropdown-content a { 
 
    display: inline-block; 
 
    padding: 20px 0px; 
 
    transition: background 0.1s ease-in-out; 
 
} 
 

 
.navbar-link:hover, 
 
.dropdown-content a:hover { 
 
    background: #3f5775; 
 
} 
 

 
.navbar-link a { 
 
    padding: 20px 10px; 
 
    color: #5DD39E; 
 
    text-decoration: none; 
 
} 
 

 
.dropdown { 
 
    position: relative; 
 
    display: inline-block; 
 
} 
 

 
.dropdown-content { 
 
    display: none; 
 
    position: absolute; 
 
    top: 100%; 
 
    min-width: 160px; 
 
    padding: 10px; 
 
    z-index: 1; 
 
    background-color: #3A506B; 
 
} 
 

 
.dropdown-content a { 
 
    display: block; 
 
} 
 

 
body { 
 
    font-family: 'Open Sans', Arial, sans-serif; 
 
    background: #FFFFFF; 
 
    color: #16302B; 
 
    margin: 0px; 
 
} 
 

 
.visible { 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav class="navbar"> 
 
    <ul class="navbar-links"> 
 
    <li class="navbar-link"><a href="#">Home</a></li> 
 
    <li class="navbar-link"><a href="#">About</a></li> 
 
    <li class="navbar-link dropdown"> 
 
     <a href="#"> 
 
      Projects 
 
      <i class="fa fa-caret-down" aria-hidden="true"></i> 
 
      </a> 
 
     <div class="dropdown-content"> 
 
     <a href="#">Shanary</a> 
 
     <a href="#">Physics Solver</a> 
 
     <a href="#">A simple blog</a> 
 
     </div> 
 
    </li> 
 
    <li class="navbar-link dropdown"> 
 
     <a href="#"> 
 
      Projects 
 
      <i class="fa fa-caret-down" aria-hidden="true"></i> 
 
      </a> 
 
     <div class="dropdown-content"> 
 
     <a href="#">Something else</a> 
 
     <a href="#">Text Editor</a> 
 
     <a href="#">A social Network</a> 
 
     </div> 
 
    </li> 
 
    </ul> 
 
</nav>

見片段

+0

我運行了代碼片段,它沒有像預期的那樣去。您無法切換下拉菜單,只需在它們之間切換即可。換句話說,點擊下拉菜單並不會讓它們消失。這是我想要的。 – Akar

+0

我做了一個編輯....檢查出來 – repzero

+0

這樣做,謝謝你的答案。我會upvote並確認它。 – Akar