JQUERY读取JSON来生成主菜单及点击主菜单项显示相应子菜单 V2

嗯嗯..第一版出现个问题...IE居然不兼容..于是换了种办法实现之...顺路添加了没有子菜单项直接跳转的主菜单项.

1.JS代码修改

  1. var saveMainItem;
  2. var saveSubItem;
  3. var tempData;
  4. //绑定CLASS
  5. function bindClass(selected)
  6. {
  7.     $("#nav_node > li").each(function(i) { //遍历菜单
  8.         if(i == selected) //当前单击的按钮
  9.         {
  10.             $(this).addClass("select"); //选定之
  11.         }else
  12.         {
  13.             $(this).removeClass(); //删除样式
  14.         }
  15.     });
  16. }
  17. //初始化菜单
  18. function initMenu()
  19. {
  20.     $("#nav_node").empty(); //清空主菜单各项
  21.     var tempItem = saveMainItem.clone(true); //克隆一个节点
  22.     
  23.     for(var i=0 ;i< tempData.menumain.length ;i++) //遍历节点
  24.     {
  25.         tempItem = saveMainItem.clone(true); //克隆一个节点
  26.         
  27.         tempItem.find("a").attr("href",tempData.menumain[i].url); //设置HREF
  28.         tempItem.find("a").attr("class",tempData.menumain[i].className); //设置ICON
  29.         tempItem.find("a").html("" + tempData.menumain[i].title); //设置标题
  30.         tempItem.find("sup").attr("class",tempData.menumain[i].stat); //设置边上的那个按钮..
  31.         tempItem.find("a").attr("id",i);
  32.     
  33.         $("#nav_node").append(tempItem); //添加节点
  34.     }
  35. }
  36. //根据用户点击的按钮来生成子按钮列表
  37. function initSubMenu(eleNod)
  38. {
  39.     var selected = $(eleNod).attr("id");
  40.     
  41.     $("#submenu").empty(); //清空子菜单各项
  42.     tempSubData = tempData.menumain[selected].submenu; //提取子菜单列表
  43.     
  44.     for(var i=0 ;i< tempSubData.length ;i++) //遍历节点
  45.     {
  46.         var tempItem = saveSubItem.clone(true); //克隆节点
  47.         
  48.         tempItem.find("a").attr("href",tempSubData[i].url); //设置HREF
  49.         tempItem.find("a").text(tempSubData[i].title); //设置TEXT
  50.         
  51.         $("#submenu").append(tempItem); //添加到子菜单中
  52.     }
  53.     
  54.     bindClass(selected);    //绑定CSS
  55. }
  56.                 
  57. //绑定数据
  58. function bind()
  59. {
  60.     $.ajax({
  61.         type: "get",//使用get方法访问后台
  62.         dataType: "json",//返回json格式的数据
  63.         url: "menu2.js",//要访问的后台地址
  64.         data: "",//要发送的数据
  65.         success: function(msg){//msg为返回的数据,在这里做数据绑定
  66.             tempData = msg;
  67.             initMenu(); //初始化菜单
  68.             
  69.             $("#nav_node > li").each(function(i){   //遍历所有主菜单项
  70.                 if(i == 0)  //如果是第一个的话
  71.                 {
  72.                     initSubMenu($(this).find("a") );    //默认显示第一个主菜单项的子菜单项
  73.                 }
  74.                 
  75.                 if($(this).find("a").attr("href") == "#" ){ //如果没有链接的主菜单项
  76.                     $(this).find("a").click( function(){    //绑定单击事件
  77.                         initSubMenu( eval('this') );    
  78.                     });
  79.                 }
  80.             }); 
  81.          }
  82.     });
  83. }
  84. $(document).ready(function() {
  85.     $('.menu, .active, .innertab, .foot').pngFix( );
  86.    
  87.    saveSubItem = $("#submenu > li").clone(true); //子菜单项
  88.    saveMainItem = $("#nav_node > li").clone(true); //主菜单项
  89.    bind();  //绑定数据
  90. });

嗯..就是添加了个ID.然后从ID来读取每个项的值...然后使用了常规的..JQUERY的CLICK....

from http://blog.csdn.net/my9963/archive/2008/12/15/3525485.aspx

你可能感兴趣的:(jqery,&,json,json,jquery,function,class,menu,css)