二级横菜单显示+sitemesh母板应用

效果图:

代码如下:

View Code
 1 /**
 2  * 二级横菜单,sitemesh通用模版
 3  * 主要思想:菜单项点击后,变激活色,经过其他的变背景色
 4  * 增加层$("<div></div>") $('div[menuId='+tem1+']') $("div[id^=sk]") $('#'+i) $("div.menu") 代表层的5种方法
 5  */
 6 var menustate="";
 7 var substate="";//判断是否被点击
 8 $().ready(function(){
 9     getTestData(showData);//调用的比较晚,callback回调函数
10 });
11 
12 function getTestData(callback){
13     var url="menuData.json";
14     $.getJSON(url,null,function(data){testData=data;callback(data);});//url可以是action ,param是传给action的
15 }
16 
17 function showData(data){
18     for(var id in data)
19         {   
20                 var menuiddiv = $("div#sk" + id);//可以不需要  那种下拉的 需要再添加一个层
21                 menuiddiv=$("<div></div>").addClass("menuItem").attr({id:"sk" + id,menuId:id}).appendTo($("div.menu"));
22                 $("<div></div>").html(data[id]["name"]).appendTo(menuiddiv);
23                 menuiddiv.mouseover(function(){
24                     if($(this).attr("menuId")!=menustate) $(this).css("background-color","yellow");
25             }).mouseout(function(){
26                 if($(this).attr("menuId")!=menustate) 
27                 $(this).css("background-color","white");
28             }).click(function(event){
29                     $("div[id^=sk]").css("background-color","white"); //其他所有的层,^表示开头,$表示结束 正则表达式
30                     $(this).css("background-color","red");menustate=$(this).attr("menuId");showSub(this);
31             });
32         }
33     //下面的是为母板服务的
34     var valArry = window.location.href.split("=");
35     if(valArry.length > 1){//区分是否有参数,如编辑和增加那个模块
36         var temp = valArry[1].split("_");
37         var tem1 = temp[0]; var tem2=temp[1];
38         $('div[menuId='+tem1+']').css("background-color","red");showSub($('div[menuId='+tem1+']'));//一级菜单背景色改变,并显示二级菜单
39         $('div[subId='+tem2+']').css("background-color","blue");substate=tem2;//选中的子菜单变背景色,且标志它
40         }
41 }
42 function showSub(param){
43     var menuId=$(param).attr("menuId");
44     var a=testData[menuId]["subMenu"];
45     $("div.submenu").html('');
46     for(var j in a)//j指一个小json
47         $("<div></div>").addClass("menuItem").html(a[j]["name"]).attr({action:a[j]["action"],subId:j}).appendTo($("div.submenu")).mouseover(function(){
48             if($(this).attr("subId")!=substate)
49             $(this).css("background-color","yellow");}).mouseout(function(){
50                 if($(this).attr("subId")!=substate)$(this).css("background-color","white");}).click(function(){
51                var param=menuId+"_"+$(this).attr("subId");
52                 var action = $(this).attr("action")+"?id="+param;//传显示子菜单的参数
53                 window.location = action;
54             
55         });
56 }

涉及知识点回顾:
1、jquery 3类属性(8个)  attr 、removeAttr / addClass 、removeClass 、hasClass  、toggolClass / html 、val

2、jquery  选择器  $("")或者是带参数$(''+param+'')格式 5+4+4+7+10+4 6类34个

        通用5个(*,#id,.class,element,.class.class)如$("ul li :eq(3)")

        配用4个(:first,:last,:even,:odd)

        索引4个(:eq(index),:qt(no),:lt(no),:not(selsctor)) 如 $("input :not(:empty)")

        正则表达式常用符号 ^&http://www.cnblogs.com/yirlin/archive/2006/04/12/373222.html 如$("div^=d")

        指所有的元素7个 (:head,:animated,:contains(text),:empty,:hidden,:visible,s1,s2,s3)

        属性元素4个 ([attribute],[attribute=value],[attribute!=value],[attribute$=value])$("[href$='.jpg']")

        input元素10个(:input,:text,:password,:radio,:checkbox,:submit,:reset,:button,:image,:file)

        input动作元素4个   (:enabled,:disabled,:selected,:checked)

3、jquery 文档操作

4、jquery事件

5、jquery css

6、jquery Ajax callback   jQuery.getJSON()

posted @ 2012-11-21 18:36  墙头一颗草  Views(840)  Comments(0Edit  收藏  举报