Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json中的jQuery树_Jquery_Json - Fatal编程技术网

Json中的jQuery树

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",{

我正在尝试创建一个基于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",{"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与以前的代码段。请使用更新的代码段