2010-03-03 16 views
0

JQUERY多級手風琴我想創建一個使用嵌套無序列表的多級手風琴。使用UL

我試圖做到:

  • 僅顯示 「激活」 UL(其他 保持隱藏)

  • 當有一個嵌套的UL - 切換 僅嵌套UL( 2222 - > 2.1)

全部代碼在這裏:http://pastie.org/852421

JS

$(document).ready(function() { 

    $('ul.menu li ul').hide(); 

    $('ul.menu li a').click(function(e){ 

     $('ul.menu li a').each(function(i){ 
      if($(this).next().is("ul") && $(this).next().is(":visible")){ 
       $(this).next().slideUp("fast"); 
      } 
     }); 

     var e = $(e.target);     

     if(e.next().is("ul") && e.next().is(":visible")){ 
      e.next().slideUp("fast"); 
      } else { 
      e.next().slideDown("fast"); 
     } 
    }); 

}); 

HTML

<ul class="menu"> 
    <li><a href="#">11111</a> 
     <ul> 
      <li><a href="#" id="one">1.1</a></li> 
      <li><a href="#" id="one">1.2</a></li> 
     </ul> 
    </li> 
    <li><a href="#">22222</a> 
     <ul> 
      <li><a href="#">2.1+ (problem)</a> 
       <ul> 
        <li><a href="#">2.1.1</a></li> 
        <li><a href="#">2.2.2</a></li> 
       </ul> 
      </li> 
      <li><a href="#">2.2</a></li> 
     </ul> 
    </li> 
    <li><a href="#">33333</a> 
     <ul> 
      <li><a href="#">3.1</a></li> 
      <li><a href="#">3.2</a></li> 
     </ul> 
    </li> 
</ul> 

回答

1

只需添加.active類活性li然後用jQuery撥打:

$("ul:has(li.active)").slideDown(); 

簡單;]

編輯:
也是,我以前用過以下:

$(rootparent+' ul').hide(); 
$(rootparent+' ul:has(li#active)').show(); 
$(rootparent+">li:has(a[href*='"+activepage+"'])>ul").show(); 

rootparent是最頂層ulactivepage活躍URI

+0

這並不能解決任何我的問題。 – Eeyore 2010-03-03 21:40:05

+0

啊,小錯誤。 – 2010-03-03 21:43:51

+0

,不要這麼快-1 – 2010-03-03 21:49:22