递归函数-jQuery,获取链接

递归函数-jQuery,获取链接,jquery,ajax,recursion,Jquery,Ajax,Recursion,我在用于列表(文件夹和链接)的递归函数中遇到问题 每个文件夹都有链接,也许每个文件夹也都有子文件夹 我的问题是,我不能显示他们的相关文件夹内的链接,我的代码只是列出没有链接的文件夹 这是我的密码: function buildTree(jsonUrl) { function tree(treeData) { var mainUl = $('<ul>'); $.each(treeData, function( inde

我在用于列表(文件夹和链接)的递归函数中遇到问题 每个文件夹都有链接,也许每个文件夹也都有子文件夹

我的问题是,我不能显示他们的相关文件夹内的链接,我的代码只是列出没有链接的文件夹

这是我的密码:

function buildTree(jsonUrl) {

        function tree(treeData) {
            var mainUl = $('<ul>');
            $.each(treeData, function( index, folder ) {
                id = "folder"+ folder.id;
                var li =$('<li id="'+id+'" >');
                ul = $('<ul>');
                ul.append(li.text(folder.name).append(tree(folder.subFolders)));

                $.each(folder.links, function( index, link ) {
                    ul.append($('<li>').text(link.name));
                });
                mainUl.append(li);
            });
            return mainUl;
        }

        $.ajax({
           url: jsonUrl,
           dataType: "json",
           type: "get",
           success: function (data) {
                    $('#links-tree').append(tree(data));
           },
           error: function (e) {
               console.log(e)
           },
       });
}
函数构建树(jsonUrl){
函数树(treeData){
var mainUl=$(“
    ”); $.each(树数据、函数(索引、文件夹){ id=“folder”+folder.id; 变量li=$(“
  • ”); ul=$(“
      ”); 追加(li.text(folder.name).append(tree(folder.subFolders)); $.each(folder.links,函数(索引,链接){ ul.append($(“
    • ”).text(link.name)); }); 主要附加(li); }); 返回mainUl; } $.ajax({ url:jsonUrl, 数据类型:“json”, 键入:“获取”, 成功:功能(数据){ $(“#链接树”).append(树(数据)); }, 错误:函数(e){ 控制台日志(e) }, }); }
检查这个,这就是你想要实现的目标。请参考这个

只是在下面做了一些改变

function tree(treeData) {
    if (treeData) {
      var mainUl = $('<ul>');
      $.each(treeData, function(index, folder) {
        id = "folder" + folder.id;
        var li = $('<li id="' + id + '" >');
        ul = $('<ul>');
        li.text(folder.name);
        ul.append(li.text(folder.name).append(tree(folder.subFolders)).append(tree(folder.links)));

        mainUl.append(li);
      });

      return mainUl;
    }
  }   
函数树(treeData){
if(treeData){
var mainUl=$(“
    ”); $.each(树数据、函数(索引、文件夹){ id=“folder”+folder.id; 变量li=$(“
  • ”); ul=$(“
      ”); li.text(文件夹名称); 追加(li.text(folder.name).append(tree(folder.subFolders)).append(tree(folder.links))); 主要附加(li); }); 返回mainUl; } }
链接应如何显示?鉴于您的数据结构,它们与您当前循环的
子文件夹
是一个完全独立的数组。在每个子文件夹中都有链接数组,以下是json数据:您是否有JSFIDLE for is请?@FadiNouh检查我的回答我们接近了。。。但它只给出最后一个子文件夹的链接,因为例如在JSFIDLE中的“Marcia”文件夹中,也有显示在li中的链接also@FadiNouh请给出
Marcia
folder中的链接文本这是json文件,正如我们可以看到的,Marcia文件夹中有链接数组,但它们没有显示在您的JSFIDLE中,谢谢您的帮助:)这很完美,但只是最后一点,在每个链接
  • 中都有空的
      ,可以清楚地说,链接只能是li,里面什么都没有,因为只有子文件夹内部有
        ,谢谢你这么好的帮助谢谢你这么多,你救了我一天