2016-08-04 45 views
0

我目前有一個帶UL的列表。點擊列表項目時,我希望UL滑動切換。這我已經實現了。我目前遇到的問題是,如果我點擊打開的相同項目關閉它,它會執行雙重切換。值得一提的是,我只希望一次打開一個子文件。如何防止同一項目上的多個幻燈片

HTML

<div class="top"> 
<ul> 
    <li><a href="#"> Item </a></li> 
<li class="drop"><a href="#"> Item Drop </a> 
    <ul class="sub"> 
    <li><a href="#"> Sub Item </a></li> 
    <li><a href="#"> Sub Item </a></li> 
    <li><a href="#"> Sub Item </a></li> 
    </ul> 
</li> 
<li><a href="#"> Item </a></li> 
<li><a href="#"> Item </a></li> 
<li class="drop"><a href="#"> Item Drop</a> 
    <ul class="sub">> 
    <li><a href="#"> Sub Item </a></li> 
    <li><a href="#"> Sub Item </a></li> 
    <li><a href="#"> Sub Item </a></li> 
    </ul> 
</li> 
</ul> 
</div> 

CSS

ul { 
    li { 
    ul { 
     display:none; 
    } 
    } 
} 

JS

$('.drop').click(function(){ 
    $('.sub').slideUp(); 
    $(this).children('.sub').slideToggle(); 
}); 

http://codepen.io/anon/pen/RRZPvZ

+0

刪除'$( '子')效果基本show();' – guradio

+0

開溜。我應該提到,我希望所有其他人在單擊某個項目時向上滑動,以便只顯示一個項目。 – MegaTron

回答

3

嘗試使用以下

$('.drop').click(function(e){ 
    if($(e.target).closest('ul').is(':not(.sub)')) {//if the clicked element is has a ul that is not .sub we slide them up 
    $('.sub').slideUp();} 
    $(this).children('.sub').slideToggle(); 
}); 

或:

$('.drop').click(function(e){ 
    $('.sub').not($(this).children('.sub')).slideUp();//hide all except the one we want to display 
    $(this).children('.sub').slideToggle(); 
}); 
+0

謝謝百萬Madalin。很親切。 – MegaTron