Json中的jQuery树
我正在尝试创建一个基于Json的树,但我不知道如何继续 这就是我所尝试的:Json中的jQuery树,jquery,json,Jquery,Json,我正在尝试创建一个基于Json的树,但我不知道如何继续 这就是我所尝试的: var j = '[{"Category 1": ["Item 1", "Item 2", "Item 3"]},{"Category 2": [{"Subcategory 1": ["Item 1", "Item 2", "Item 3", "Item 4"]},{"Subcategory 2": ["Item 1", "Item 2", "Item 3", "Item 4"]},"Item 1","Item 2",{
var j = '[{"Category 1": ["Item 1", "Item 2", "Item 3"]},{"Category 2": [{"Subcategory 1": ["Item 1", "Item 2", "Item 3", "Item 4"]},{"Subcategory 2": ["Item 1", "Item 2", "Item 3", "Item 4"]},"Item 1","Item 2",{"Subcategory 3": ["Item 1"]}]}]';
var json = $.parseJSON(j);
$.each(json, function(i, object) {
$.each(object, function(property, value) {
$('<ul><li class="has-children-'+i+'">'+ property +'</li></ul>').appendTo('#tree');
$.each(value, function(index, el) {
});
});
});
var j='[{“类别1”:[“项目1”、“项目2”、“项目3”]},{“类别2”:[{“子类别1”:[“项目1”、“项目2”、“项目3”、“项目4”]},{“子类别2”:[“项目1”、“项目2”、“项目3”、“项目4”]},“项目1”、“项目2”、{“子类别3”:[“项目1”]}];
var json=$.parseJSON(j);
$.each(json,函数(i,对象){
$.each(对象、函数(属性、值){
$(“- “+property+”
).appendTo(“#tree”);
$.each(值、函数(索引、el){
});
});
});
内部$。每个(值、函数(索引、el)
我应该做子类别,但我不知道如何做
任何帮助都很好,谢谢
这里有一个你可以编写一个菜单函数,它可以迭代,因为你不知道子菜单可以作为字符串或更多子菜单直接访问,或者更确切地说,你可以用一种非常酷的方法来检查它是否是一个递归对象 注意:不要在DOM中多次追加。请阅读有关DOM重绘和回流以及文档片段的内容 检查下面的代码片段
var j='[{“类别1”:[“项目1”、“项目2”、“项目3”]},{“类别2”:[{“子类别1”:[“项目1”、“项目2”、“项目3”、“项目4”]},{“子类别2”:[“项目1”、“项目2”、“项目3”、“项目4”]},“项目1”、“项目2”、{“子类别3”:[“项目1”]}];
var json=$.parseJSON(j);
变量树=$('');
$.each(json,函数(i,对象){
append(makeMenu(object));
});
$('#tree')。追加(tree);
函数makeMenu(对象,内部){
变量li,wrapTag=$(“
”);
$。每个(对象、函数(k、v){
if(typeof v==='object'){
if((typeof v=='object'?v.length:0)==未定义){
li=生成菜单(v,真);
}否则
li=$(''+k+makeMenu(v)[0].outerHTML+' ');
}否则
li=$(''+v+' ');
包装追加(li);
});
return insider?wrapTag.children():wrapTag;
}
您可以编写一个迭代的菜单函数,因为您不知道子菜单可以作为字符串或更多子菜单直接访问,或者更确切地说,您可以通过一种非常酷的方式来完成,即检查它是否是一个递归对象 注意:不要在DOM中多次追加。请阅读有关DOM重绘和回流以及文档片段的内容 检查下面的代码片段
var j='[{“类别1”:[“项目1”、“项目2”、“项目3”]},{“类别2”:[{“子类别1”:[“项目1”、“项目2”、“项目3”、“项目4”]},{“子类别2”:[“项目1”、“项目2”、“项目3”、“项目4”]},“项目1”、“项目2”、{“子类别3”:[“项目1”]}];
var json=$.parseJSON(j);
变量树=$('');
$.each(json,函数(i,对象){
append(makeMenu(object));
});
$('#tree')。追加(tree);
函数makeMenu(对象,内部){
变量li,wrapTag=$(“
”);
$。每个(对象、函数(k、v){
if(typeof v==='object'){
if((typeof v=='object'?v.length:0)==未定义){
li=生成菜单(v,真);
}否则
li=$(''+k+makeMenu(v)[0].outerHTML+' ');
}否则
li=$(''+v+' ');
包装追加(li);
});
return insider?wrapTag.children():wrapTag;
}
试试这个:
var j = '[{"Category 1": ["Item 1", "Item 2", "Item 3"]},{"Category 2": [{"Subcategory 1": ["Item 1", "Item 2", "Item 3", "Item 4"]},{"Subcategory 2": ["Item 1", "Item 2", "Item 3", "Item 4"]},"Item 1","Item 2",{"Subcategory 3": ["Item 1"]}]}]';
var temp2 = json2html($.parseJSON(j))
$('#temp').append(temp2)
function json2html(json) {
var i, ret = "";
ret += "<ul>";
for (i in json) {
if (!isNaN(parseInt(i))) ret += '<li>' + GetObjectName((json[i]))
if (typeof json[i] === "object") ret += json2html(json[i]);
else ret += json[i];
if (!isNaN(parseInt(i))) ret += '</li>'
}
ret += "</ul>";
return ret;
}
function GetObjectName(json) {
for (i in json) {
if (isNaN(i))
return i;
else return ''
}
}
var j='[{“类别1”:[“项目1”、“项目2”、“项目3”]},{“类别2”:[{“子类别1”:[“项目1”、“项目2”、“项目3”、“项目4”]},{“子类别2”:[“项目1”、“项目2”、“项目3”、“项目4”]},“项目1”、“项目2”、{“子类别3”:[“项目1”]}];
var temp2=json2html($.parseJSON(j))
$('#temp')。追加(temp2)
函数json2html(json){
变量i,ret=“”;
ret+=“”;
for(我使用json){
如果(!isNaN(parseInt(i)))ret+='- '+GetObjectName((json[i]))
if(typeof json[i]=“object”)ret+=json2html(json[i]);
else ret+=json[i];
如果(!isNaN(parseInt(i)))ret+='
'
}
ret+=“
”;
返回ret;
}
函数GetObjectName(json){
for(我使用json){
if(isNaN(i))
返回i;
否则返回“”
}
}
试试这个:
var j = '[{"Category 1": ["Item 1", "Item 2", "Item 3"]},{"Category 2": [{"Subcategory 1": ["Item 1", "Item 2", "Item 3", "Item 4"]},{"Subcategory 2": ["Item 1", "Item 2", "Item 3", "Item 4"]},"Item 1","Item 2",{"Subcategory 3": ["Item 1"]}]}]';
var temp2 = json2html($.parseJSON(j))
$('#temp').append(temp2)
function json2html(json) {
var i, ret = "";
ret += "<ul>";
for (i in json) {
if (!isNaN(parseInt(i))) ret += '<li>' + GetObjectName((json[i]))
if (typeof json[i] === "object") ret += json2html(json[i]);
else ret += json[i];
if (!isNaN(parseInt(i))) ret += '</li>'
}
ret += "</ul>";
return ret;
}
function GetObjectName(json) {
for (i in json) {
if (isNaN(i))
return i;
else return ''
}
}
var j='[{“类别1”:[“项目1”、“项目2”、“项目3”]},{“类别2”:[{“子类别1”:[“项目1”、“项目2”、“项目3”、“项目4”]},{“子类别2”:[“项目1”、“项目2”、“项目3”、“项目4”]},“项目1”、“项目2”、{“子类别3”:[“项目1”]}];
var temp2=json2html($.parseJSON(j))
$('#temp')。追加(temp2)
函数json2html(json){
变量i,ret=“”;
ret+=“”;
for(我使用json){
如果(!isNaN(parseInt(i)))ret+='- '+GetObjectName((json[i]))
if(typeof json[i]=“object”)ret+=json2html(json[i]);
else ret+=json[i];
如果(!isNaN(parseInt(i)))ret+='
'
}
ret+=“
”;
返回ret;
}
函数GetObjectName(json){
for(我使用json){
if(isNaN(i))
返回i;
否则返回“”
}
}
如果你投了反对票,请添加评论。如果你投了反对票,请添加评论。这正是我想要的。谢谢。@CristiPrologue:前面的代码段有一些不一致和不正确的HTML。请使用更新的代码段。这正是我想要的。谢谢。@CristiPrologue:有一些不一致和不正确的地方t HTML与以前的代码段。请使用更新的代码段