Jquery可嵌套/初始化json中的列表

时间:2015-02-02 17:11:25

标签: javascript jquery json

我使用jquery可嵌套插件(https://github.com/dbushell/Nestable/blob/master/jquery.nestable.js)生成可嵌套列表。

生成json输出并将其保存到数据库中不是问题。

此插件生成的json示例:

[{"id":4,"children":[{"id":3}]}] 

问题是:如何从同一个json数组构造可嵌套列表?

3 个答案:

答案 0 :(得分:2)

您可以从您拥有的阵列中形成所需的html。只需将它包装在一个处理嵌套元素的函数中(可以通过调用自身来完成)并返回<ol>列表。

var tarr = [{"id":4,"children":[{"id":3}]}];

function listify(strarr) {
  var l = $("<ol>").addClass("dd-list");
  $.each(strarr, function(i, v) {
    var c = $("<li>").addClass("dd-item"),
      h = $("<div>").addClass("dd-handle").text("Item " + v["id"]);
    l.append(c.append(h));
    if (!!v["children"])
      c.append(listify(v["children"]));
  });
  return l;
}

var list = listify(tarr);
$("#test").append(list);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="test"></div>

答案 1 :(得分:1)

我们都已经看到了如何动态地将项目添加到nestable中。我编写了这段代码,您可以在其中创建来自JSON对象的可嵌套项。

void access::on_pushButton_clicked(){

  QProcess process;
  process.start("mate-terminal cd /tmp");
  process.write("ls -Al");
  process.closeWriteChannel();

  process.waitForFinished();
  QByteArray output = sh.readAll();
  process.close();
     }

答案 2 :(得分:0)

Ozan 的回答很有效,但如果您需要更高级的配置,那么这里是链接 https://github.com/RamonSmit/Nestable2