Jquery json到嵌套无序列表
我试图在jQuery中将JSON转换为无序列表。这是我的JSON数据Jquery json到嵌套无序列表,jquery,html,json,html-lists,Jquery,Html,Json,Html Lists,我试图在jQuery中将JSON转换为无序列表。这是我的JSON数据 var myJSON = "{name:\"Director\",children:[name:\"Exe Director1\",name:\"Exe Director2\",name:\"Exe Director3\",children:[name:\"Sub Director1\",name:\"Sub Director2\",name:\"Sub Director3\",children:[name:\"Cameram
var myJSON = "{name:\"Director\",children:[name:\"Exe Director1\",name:\"Exe Director2\",name:\"Exe Director3\",children:[name:\"Sub Director1\",name:\"Sub Director2\",name:\"Sub Director3\",children:[name:\"Cameraman 1\",name:\"Cameraman 2\"]]]}";
预期输出为
<ul>
<li>Director
<ul>
<li>Exe Director 1</li>
<li>Exe Director 2</li>
<li>Exe Director 3
<ul>
<li>Sub Director 1</li>
<li>Sub Director 2</li>
<li>Sub Director 3
<ul>
<li>Cameraman 1</li>
<li>Cameraman 2</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
- 导演
- 执行主任1
- 执行主任2
- 执行主任3
- 副主任1
- 副主任2
- 副主任3
- 摄影师1
- 摄影师2
我该怎么办
干杯,这正是您需要的: 使用jQuery模板API。这曾经是jQuery的一部分,但目前仅作为插件提供。然而,我认为jQuery很快会再次采用这种或类似的技术 它非常易于使用:
$.tmpl("template", jsonObject)
下面是一个小的基本模板示例:
$.tmpl(
"<li><b>${Id}</b>${Name}</li>",
[{Id:1, Name:"Werner"}, {Id:2, Name:"Klaus"}]
);
$.tmpl(
“${Id}${Name} ”,
[{Id:1,名字:“沃纳”},{Id:2,名字:“克劳斯”}]
);
这将导致以下jQuery HTML元素可以附加到任何位置:
var data = {name:"Director",children:[{name:"Exe Director1"},{name:"Exe Director2"},{name:"Exe Director3", children:[{name:"Sub Director3_1"},{name:"Sub Director3_2"},{name:"Sub Director3_3",children:[{name:"Cameraman3_3_1"},{name:"Cameraman3_3_2"}]}]}]};
var template = '\
<ul>\
<li>${name}\
<ul>\
{{each(childindex, child) children}}\
<li>${child.name}\
<ul>\
{{each(child2index, child2) child.children}}\
<li>${child2.name}</li>\
{{/each}}\
</ul>\
</li>\
{{/each}}\
</ul>\
</li>\
</ul>\
';
$('body').empty().append($.tmpl(template, data));
var data={name:“Director”,children:[{name:“Exe Director 1”},{name:“Exe Director 2”},{name:“Sub Director 3_1”},{name:“Sub Director 3_2”},{name:“Sub Director 3_3_3_1”},children name:[{name:“Cameraman3_3_2”}]};
var模板\
\
- ${name}\
\
{{each(childindex,child)children}\
- ${child.name}\
\
{{each(child2index,child2)child.childs}\
- ${child2.name}
\
{{/每个}}\
\
\
{{/每个}}\
\
\
\
';
$('body').empty().append($.tmpl(模板,数据));
浏览器结果:
- 董事
- 执行董事1
- 执行董事2
- 执行董事3
- 副董事3\u 1 副董事3\u 2
- 副董事3\u 3
- ..
- 执行董事3
- 执行董事2
威尔这正是你需要的: 使用jQuery模板API。这曾经是jQuery的一部分,但目前仅作为插件提供。然而,我认为jQuery很快会再次采用这种或类似的技术 它非常易于使用:
下面是一个小的基本模板示例:$.tmpl("template", jsonObject)
$.tmpl( "<li><b>${Id}</b>${Name}</li>", [{Id:1, Name:"Werner"}, {Id:2, Name:"Klaus"}] );
这将导致以下jQuery HTML元素可以附加到任何位置:$.tmpl( “
- ${Id}${Name}
”, [{Id:1,名字:“沃纳”},{Id:2,名字:“克劳斯”}] ); - 执行董事1
- 1沃纳
- 2克劳斯
对于复杂数据,还可以使用“{each}}”模板表示法迭代JSON子对象。以下是数据和模板的代码:
var data = {name:"Director",children:[{name:"Exe Director1"},{name:"Exe Director2"},{name:"Exe Director3", children:[{name:"Sub Director3_1"},{name:"Sub Director3_2"},{name:"Sub Director3_3",children:[{name:"Cameraman3_3_1"},{name:"Cameraman3_3_2"}]}]}]}; var template = '\ <ul>\ <li>${name}\ <ul>\ {{each(childindex, child) children}}\ <li>${child.name}\ <ul>\ {{each(child2index, child2) child.children}}\ <li>${child2.name}</li>\ {{/each}}\ </ul>\ </li>\ {{/each}}\ </ul>\ </li>\ </ul>\ '; $('body').empty().append($.tmpl(template, data));
浏览器结果:var data={name:“Director”,children:[{name:“Exe Director 1”},{name:“Exe Director 2”},{name:“Sub Director 3_1”},{name:“Sub Director 3_2”},{name:“Sub Director 3_3_3_1”},children name:[{name:“Cameraman3_3_2”}]}; var模板\
- \
- ${name}\
- \
{{each(childindex,child)children}\
- ${child.name}\
- \
{{each(child2index,child2)child.childs}\
- ${child2.name} \ {{/每个}}\
\
{{/每个}}\
\
- ${child.name}\
- 董事
- 执行董事1
- 执行董事2
- 执行董事3
- 副董事3\u 1 副董事3\u 2
- 副董事3\u 3
- ..
- 执行董事3
- 执行董事2
将您可以按如下方式使用递归函数。每次调用该函数时,它都返回一个“UL”及其子函数“LI”
您可以按如下方式使用递归函数。每次调用该函数时,它都返回一个“UL”及其子函数“LI”
看看这个,不使用插件能实现吗!:-)不。模板API曾经是jQuery的一部分,但目前仅作为插件提供。看看这个,不使用插件能实现吗!:-)不。模板API曾经是jQuery的一部分,但目前只能作为插件来使用。我会考虑使用另一个模板引擎,因为jQuery模板仍然处于beta版,并且没有被维护。JSRead对于任何新的开发都是一个很好的选择。jQuery模板已停止使用。正如
所提到的,并且根据Klaster_1
注意:jQuery团队已经决定不让这个插件通过测试版。它不再被积极开发
- 执行董事1
- ${name}\