创建动态ul li结构菜单

时间:2014-11-28 10:07:25

标签: jquery html-lists

我正在尝试创建一个多级菜单,显示网站和子视图,如树视图。

我有一个xml样本数据,看起来像这样

<sites>
    <site name="1">
        <site name="1.1">
            <site name="1.1.1"></site>
        </site>
    </site>
    <site name="2"></site>
    <site name="3">
        <site name="3.1"></site>
    </site>
</sites>

到目前为止,我所写的内容如下:

$.get('Samplexml.xml', function (d) {
    $('#div1').append('<ul></ul>');
        var data = jumpdown(d);
    });
});

function jumpdown(obj) {
    debugger;
    $($.parseXML(obj.xml)).find('site').each(function () {
        var html = "<li>" + $(this).attr("name") + "</li>";
        for (var i = 0; i < $(this).children().length; i++) {
            var y = $($.parseXML($(this).children()[0].xml)).find('site').attr('name');
            // nextlevel = nextlevel + "<ul id='" + y + "'><li>" + y + "</li></ul>";
            html = html + jumpdown($(this));
        }
        nextlevel = nextlevel + "</ul>";
        return nextlevel;
        //var x = $(this).attr('name');
    });
}

不知怎的,我迷路了,无法继续。有人帮忙完成。

1 个答案:

答案 0 :(得分:0)

on jsFiddle:http://jsfiddle.net/ymzrocks/LhupLfoy/

$.get('Samplexml.xml', function (d) 
{
    var parent = $('#div1').append('<ul></ul>'); //mark the root element
    var data = $.parseXML(d.xml); // parse data from response ONCE

    jumpdown(parent, $(data).children('sites'));   // start the process
});



function jumpdown(parent, data) 
{
    data.children().each(function () // seek for site nodes
    {
        var list = $('<li></li>').appendTo(parent);
        var p = list.text($(this).attr("name")); 

        if ($(this).children().length > 0)  // if site contains nodes
        {
            p = $('<ul></ul>').appendTo(parent);

            jumpdown(p, $(this)); // do the same only as this node as a parent
        }
    });
}