用jquery根據json動態建立多級菜單導航

來源:互聯網
上載者:User

標籤:splay   fat   files   play   tree   gif   img   post   console   

HTML結構:
<section class="sidebar"></setion>
{      "liClass": "active treeview",      "link": "index2.html",      "label": "結構預覽",      "iClass": "‘fa fa-dashboard‘",      "children": []    },    {      "liClass": "treeview",      "link": "#",      "label": "案例",      "iClass": "‘fa fa-files-o‘",      "spanClass": "pull-right-container",      "spanChildIClass": "label label-primary pull-right",      "children": [        {          "ulClass": "treeview-menu",          "children": [            {              "liClass": "treeview",              "link": "#",              "label": “文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "貨商價格影響、環比",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "1.0.01",              "iClass": "‘fa fa-circle-o‘",              "children": []            },            {              "liClass": "treeview",              "link": "#",              "label": "1.2.11",              "iClass": "‘fa fa-circle-o‘",              "children": []            }          ]        }      ]    },    {      "liClass": "treeview",      "link": "#",      "label": "文字",      "iClass": "‘fa fa-share‘",      "spanClass": "pull-right-container",      "spanChildIClass": "fa fa-angle-left pull-right",      "children": [        {          "ulClass": "treeview-menu",          "children": [            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "spanClass": "pull-right-container",              "spanChildIClass": "fa fa-angle-left pull-right",              "children": [                {                  "ulClass": "treeview-menu",                  "children": [                    {                      "liClass": "treeview",                      "link": "#",                      "label": "文字",                      "iClass": "‘fa fa-circle-o‘",                      "spanClass": "pull-right-container",                      "spanChildIClass": "fa fa-angle-left pull-right",                      "children": [                        {                          "ulClass": "treeview-menu",                          "children": [                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            }                          ]                        }                      ]                    }                  ]                }              ]            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "spanClass": "pull-right-container",              "spanChildIClass": "fa fa-angle-left pull-right",              "children": [                {                  "ulClass": "treeview-menu",                  "children": [                    {                      "liClass": "treeview",                      "link": "#",                      "label": "文字",                      "iClass": "‘fa fa-circle-o‘",                      "spanClass": "pull-right-container",                      "spanChildIClass": "fa fa-angle-left pull-right",                      "children": [                        {                          "ulClass": "treeview-menu",                          "children": [                            {                              "type": "li",                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            }                          ]                        }                      ]                    }                  ]                }              ]            },            {              "liClass": "treeview",              "link": "#",              "label": "文字",              "iClass": "‘fa fa-circle-o‘",              "spanClass": "pull-right-container",              "spanChildIClass": "fa fa-angle-left pull-right",              "children": [                {                  "ulClass": "treeview-menu",                  "children": [                    {                      "liClass": "treeview",                      "link": "#",                      "label": "文字",                      "iClass": "‘fa fa-circle-o‘",                      "spanClass": "pull-right-container",                      "spanChildIClass": "fa fa-angle-left pull-right",                      "children": [                        {                          "ulClass": "treeview-menu",                          "children": [                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            }                          ]                        }                      ]                    },                    {                      "liClass": "treeview",                      "link": "#",                      "label": "文字",                      "iClass": "‘fa fa-circle-o‘",                      "spanClass": "pull-right-container",                      "spanChildIClass": "fa fa-angle-left pull-right",                      "children": [                        {                          "ulClass": "treeview-menu",                          "children": [                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            },                            {                              "liClass": "treeview",                              "link": "#",                              "label": "文字",                              "iClass": "‘fa fa-circle-o‘",                              "children": []                            }                          ]                        }                      ]                    }                  ]                }              ]            }          ]        }      ]    },
json資料
/** * Created on 2017/6/27. */$(function () {    $.getJSON({        type: "get",        url: "dist/json/nav.json",        success: function (data) {            var showList = $("<ul class=‘" + data.ulClass + "‘><li class=‘header‘>主導航</li></ul>");            showAll(data, showList);            $(".sidebar").append(showList);        }    });    //data為json資料    //parent為要組合成html的容器    function showAll(data, parent) {        $.each(data.children, function (index, fatherLi) {//遍曆資料集            var li1 = $("<li class=‘" + fatherLi.liClass + "‘><a href=‘" + fatherLi.link + "‘><i class=" + fatherLi.iClass + "></i>" + fatherLi.label + "</a></li>");//沒有children的初始li結構            var li2 = $("<li class=‘" + fatherLi.liClass + "‘><a href=‘" + fatherLi.link + "‘><i class=" + fatherLi.iClass + "></i>" + fatherLi.label + "<span class=‘" + fatherLi.spanClass + "‘><i class=‘" + fatherLi.spanChildIClass + "‘></i></span>" + "</a></li>");//有children的初始li結構            //console.log($(li1).html());            //console.log($(li2).html());            if (fatherLi.children.length > 0) { //如果有子節點,則遍曆該子節點                var ul = $("<ul class=‘" + fatherLi.children[0].ulClass + "‘></ul>");                $(li2).append(ul).appendTo(parent);//將li的初始化選擇好,並馬上添加帶類名的ul子節點,並且將這個li添加到父親節點中                showAll(fatherLi.children[0], $(li2).children().eq(1));//將空白的ul作為下一個遞迴遍曆的父親節點傳入,遞迴調用showAll函數            } else {                $(li1).appendTo(parent);//如果該節點沒有子節點,則直接將該節點li以及文本建立好直接添加到父親節點中            }        });    }});
js代碼

總結:

  1、json資料雖是DOM結構的映射,但存DOM資訊也不是照搬全存,比如每個ul或者li就沒有必要再在json中存一個”type“:”ul“,需要觀察DOM結構的共同點及規律,進而轉換成json。

  2、ajax回呼函數傳遞參數問題:寫回掉函數的時候發現沒有地方傳參數,這個時候涉及閉包問題,可以利用匿名函數調用你想調用的函數,並傳遞參數:

$.getJSON({        type: "post",        url: "dist/json/nav.json",        success: function (data) {            var showList = $("<ul class=‘" + data.ulClass + "‘><li class=‘header‘>主導航</li></ul>");            showAll(data, showList);            $(".sidebar").append(showList);        }    });
like this

  3、這種多級菜單,與table中複雜表頭動態產生道理很相似,下一步就是嘗試用json動態產生複雜表頭

 

  

用jquery根據json動態建立多級菜單導航

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.