[jQuery]手風琴選單

[jQuery]手風琴選單

最近開始參與一個Web專案,也打算利用這案子好好加強本身jQuery能力。

需求:使用者希望選單有展開(摺疊)全部的互動效果,這裡我簡單利用hide()和show()來達到該效果。

 

Html

<head>
<script Type="text/javascript" src="js/jquery-1.4.2.js"></script>    
</head>
 
    <body>
    <a href="javascript:expandall();">展開全部</a> | <a href="javascript:collapseall();">摺疊全部</a>    
    <ul id="menu">   
    <li>標題A
        <ul class="head">
            <li><a href="~/page1.aspx">page1</a></li>
            <li><a href="~/page1.aspx">page2</a></li>
            <li><a href="~/page1.aspx">page3</a></li>           
        </ul>

 
    </li>  

 
    <li>標題B
        <ul class="head">
            <li><a href="~/page1.aspx">網頁1</a></li>
            <li><a href="~/page1.aspx">網頁2</a></li>
            <li><a href="~/page1.aspx">網頁3</a></li>           
        </ul>        
    </li>   

 
    <li>標題C
        <ul class="head">
            <li><a href="~/page1.aspx">網頁一</a></li>
            <li><a href="~/page1.aspx">網頁二</a></li>
            <li><a href="~/page1.aspx">網頁三</a></li>           
        </ul>        
    </li>   
    </ul>
    </body>    

  

 

 

jQuery 

 

 

$(function(){               
                //隱藏所有ul元素 
                $('#menu>li>ul').hide(); 
                //滑鼠移入   
                $('#menu>li').mouseover(function(){ 
                     //create a reference to the active element
                     $heading = $(this);
                      //確認子選單狀態=open
                      if ($heading.siblings().find('ul:visible').size()!=0) {
                              //關閉已開啟子選單                      
                              $heading.siblings().find('ul:visible').slideUp(500, function(){
                                  //開啟現在子選單
                                  $heading.find('ul:hidden').slideDown(500);
                              });
                      }
                      else{
                          //開啟現在子選單                      
                          $heading.find('ul:hidden').slideDown(500);
                      }
                })    
            });

 
             function expandall()
             {                 
                  //展開全部
                  $(".head").each(function(){
                      $(this).show();    
                  });
             } 

 
             function collapseall()
             {
                 //摺疊全部
                 $(".head").each(function(){
                     $(this).hide();    
                  });                     
             }

  

執行效果

image

初始畫面。

 

image

滑鼠移入標題B。

 

image

展開全部。

 

image

摺疊全部。