1. 程式人生 > >jq無限極下拉選單和點選展開選單

jq無限極下拉選單和點選展開選單

一、html部分

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link type="text/css" rel="stylesheet" href="menu.css" />  
    <script type="text/javascript" src="jquery-2.1.3.min.js"></script>  
    <script type="text/javascript" src="menu.js"></script> 
</head>
<body>  
        <ul>  
            <li class="main">  
                    <a href="#">選單項1</a>  
                <ul style="display:none;">  
                    <li>  
                        <a href="#">子選單項11</a>  
                    </li>  
                    <li>  
                        <a href="#">子選單項12</a>  
                    </li>  
                </ul>  
            </li>  
            <li class="main">  
                <a href="#">選單項2</a>  
                <ul>  
                    <li>  
                        <a href="#">子選單項21</a>  
                    </li>  
                    <li>  
                        <a href="#">子選單項22</a>  
                    </li>  
                </ul>  
            </li>  
            <li class="main">  
                <a href="#">選單項3</a>  
                <ul>  
                    <li>  
                    <a href="#">子選單項31</a>  
                    </li>  
                    <li>  
                        <a href="#">子選單項32</a>  
                    </li>  
                </ul>  
            </li>  
        </ul>  
          
        <br/>  
        <ul>  
            <li class="hmain">  
                <a href="#">選單項1</a>  
                <ul>  
                    <li>  
                        <a href="#">子選單項11</a>  
                    </li>  
                    <li>  
                        <a href="#">子選單項12</a>  
                    </li>  
                </ul>  
            </li>  
            <li class="hmain">  
                <a href="#">選單項2</a>  
                <ul>  
                    <li>  
                        <a href="#">子選單項21</a>  
                    </li>  
                    <li>  
                        <a href="#">子選單項22</a>  
                    </li>  
                </ul>  
            </li>  
            <li class="hmain">  
                <a href="#">選單項3</a>  
                <ul>  
                    <li>  
                    <a href="#">子選單項31</a>  
                    </li>  
                    <li>  
                        <a href="#">子選單項32</a>  
                    </li>  
                </ul>  
            </li>  
        </ul>  
          
    </body>
    </html>


二、css部分

ul,li{  
    list-style:none;/* //清除ul和li上預設的小圓點 */  
  
}  
ul{  
    /* 清除子選單的縮排值 */  
    padding:0;  
    margin:0;  
}  
.main,.hmain{  
    background-image:url(../images/title.gif);/*指定背景圖*/  
    background-repeat:repeat-x;  
    width:120px;  
}  
li{  
    background-color:#EEEEEE;  
}  
a {  
    /*取消所有的下劃線*/  
    text-decoration:none;  
    padding-left:20px;   
     display:block;  
    display:inline-block;/* 解決ie6不相容的問題 */   
    width:100px;  
    padding-top:3px;  
    padding-bottom:3px;  
}  
.main a,.hmain a {  
    color:white;/*主選單標籤顏色為白色*/  
    background-image:url(../images/collapsed.gif);  
    background-repeat:no-repeat;  
    background-position:3px center; /* 圖片位置在中間 */  
}  
.main li a ,.hmain li a{  
    /* 子選單項 */  
    color:black;  
    background-image:none;/* 不使用圖片 */  
    padding-left:18px;   
      
}  
.main ul,.hmain ul{  
    /* 子選單隱藏 */  
     display:none;   
}  
.hmain{  
    float:left;/*浮動顯示*/  
    margin:1px;  
}


三、js部分

$(document).ready(function(){  
    //頁面的Dom已經裝載完成時,執行的程式碼  
     $(".main > a,.hmain a").click(function(){  
         //找到主選單項對應的子選單項  
        var ulNode = $(this).next("ul");  
        // //根據情況收縮選單  
        // if(ulNode=$.css("display") == "none"){  
            // ulNode.css("display","block");  
        // }else{  
            // ulNode.css("display","none");  
        // }  
          
        // ulNode.show("normal");//設定展開的速度,可以是nomal,slow,fast  
        // ulNode.hide();  
         // ulNode.toggle();//toggle設定展開或者收縮  
        //捲簾效果,向上或者向下  
        // ulNode.slideDown();  
        // ulNode.slideUp;  
        ulNode.slideToggle();  
    });  
    //麻煩的方法  
    // $(".hmain > a").hover(function(){  
        // $(this).next("ul").slideDown();  
    // }.Function(){  
        // var ulNode=$(this).next("ul");  
        // var timeoutId =setTimeout(function(){  
          
// })         
            // ulNode.slideUp();  
    // },300);  
    // ulNode.hover(function(){  
        // clearTimeout(timeoutId);  
    // }.function(){  
        // $(this).slideUp();  
    // });  
  
    /********實現滑鼠移動到指定主選單後子選單自動顯示*****/  
      
    $(".hmain").hover(function(){  
        $(this).children("ul").slideDown();  
    },function(){  
        $(this).children("ul").slideUp();  
    });  
      
});  
   /* 
    *修改主選單的指示圖示隨著子選單的變化而變化 
    * 
    */  
function changeIcon(mainNode) {  
    if (mainNode) {  
        if (mainNode.css("background-image").indexOf("collapsed.gif") >= 0) {  
            mainNode.css("background-image","url('images/expanded.gif')");  
        } else {  
            mainNode.css("background-image","url('images/collapsed.gif')");  
        }  
    }  
}