javascript解析树

javascript解析树,javascript,json,parsing,recursion,tree,Javascript,Json,Parsing,Recursion,Tree,我正在jquery中编写一个插件,作为文件管理器 我用php构建我的文件夹结构,我使用ajax调用该php文件,并返回如下内容 var mystring = '' foreach key (would be 1,css etc) mystring += key if has children mystring += key for each children same as above until all structure is parsed ,,,,,

我正在jquery中编写一个插件,作为文件管理器 我用php构建我的文件夹结构,我使用ajax调用该php文件,并返回如下内容

var mystring = ''

foreach key (would be 1,css etc)

  mystring += key

  if has children

     mystring += key

     for each children same as above until all structure is parsed
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“:[]},“js”:{“libs”:[]},“menu”:{“img”:[]},“walpappere”:{“1”:[]}}

如何使用jquery或javascript解析信息来执行类似操作

var mystring = ''

foreach key (would be 1,css etc)

  mystring += key

  if has children

     mystring += key

     for each children same as above until all structure is parsed
$.isPlainObject
来自jQuery。如果您不想使用jQuery,它相当于:
{}.toString.call(obj[key])==='[object]'


$.isPlainObject
来自jQuery。如果您不想使用jQuery,它相当于:
{}.toString.call(obj[key])===='[object object]'

创建一个执行该操作的函数:

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],“图标“:[]},”js:{“libs:[]},“menu:{”img:[]},“walpappere:{”1:[]}}; 功能列表(项目、级别){ 对于(var键入项){//迭代 if(items.hasOwnProperty(键)){ //根据级别写入空格数 //写下名字和换行符 document.write( (新数组(级别+1)).join(“”)+ 钥匙+ “
” ); //如果是对象,则递归调用 if(items[key]!=null&&typeof items[key]=“object”){ 列表(项目[关键],级别+1); } } } } 列表(obj,0);
创建一个函数,该函数可以:

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,],“图标”:[]},“js”:{“libs”:[]},“menu”:{“img”:[]},“walpappere”:{“1”:[]}; 功能列表(项目、级别){ 对于(var键入项){//迭代 if(items.hasOwnProperty(键)){ //根据级别写入空格数 //写下名字和换行符 document.write( (新数组(级别+1)).join(“”)+ 钥匙+ “
” ); //如果是对象,则递归调用 if(items[key]!=null&&typeof items[key]=“object”){ 列表(项目[关键],级别+1); } } } } 列表(obj,0);
我还将研究如何将jQuery与jQueryTMPL和tmpl.plus结合使用。然后,您可以创建一个递归模板进行渲染。有一点学习曲线,但人类确实将标记从逻辑中分离出来

如果递归操作正确,则可以很容易地调用:

var data = {"1":[],"css":{"admin":[],"tabs":{"skin1":{"images":[]},"skin10":{"images":[]},"skin11":{"images":[]},"skin12":{"images":[]},"skin2":[],"skin3":{"images":[]},"skin4":{"images":[]},"skin5":{"images":[]},"skin6":{"images":[]},"skin7":{"images":[]},"skin8":{"images":[]},"skin9":{"images":[]}}},"img":{"admin":[],"filemanager":[],"icons":[]},"js":{"libs":[]},"menu":{"img":[]},"walpappere":{"1":[]}};

//create the recursive template
$.template('myFolders'," ====this is the hard part here==== ");

//some javascript to add functionality to each nested list
var postProcess = function(item){
    $(item.nodes[0]).click(function(e){
        console.log("This is the item you clicked",$(this));
    });
};

//create the templates with event handling and append to the body
$.tmpl('myFolders',data, {rendered:postProcess}).appendTo($('body'));

这种工作流非常适合真正动态的站点

我还将研究如何将jQuery与jQuery tmpl和tmpl.plus结合使用。然后,您可以创建一个递归模板进行渲染。有一点学习曲线,但人类确实将标记从逻辑中分离出来

如果递归操作正确,则可以很容易地调用:

var data = {"1":[],"css":{"admin":[],"tabs":{"skin1":{"images":[]},"skin10":{"images":[]},"skin11":{"images":[]},"skin12":{"images":[]},"skin2":[],"skin3":{"images":[]},"skin4":{"images":[]},"skin5":{"images":[]},"skin6":{"images":[]},"skin7":{"images":[]},"skin8":{"images":[]},"skin9":{"images":[]}}},"img":{"admin":[],"filemanager":[],"icons":[]},"js":{"libs":[]},"menu":{"img":[]},"walpappere":{"1":[]}};

//create the recursive template
$.template('myFolders'," ====this is the hard part here==== ");

//some javascript to add functionality to each nested list
var postProcess = function(item){
    $(item.nodes[0]).click(function(e){
        console.log("This is the item you clicked",$(this));
    });
};

//create the templates with event handling and append to the body
$.tmpl('myFolders',data, {rendered:postProcess}).appendTo($('body'));

这种工作流非常适合真正动态的网站

我尝试了你的代码,但我只得到了第一组密钥没有孩子我尝试了你的代码,但我只得到了第一组密钥没有孩子Hanks工作得很好现在我需要了解如何使用它来构建类似
  • value
    • value
      • value
    适用于嵌套数据较少的相对较小的对象。感谢非常有用,现在我需要了解如何使用它构建类似于
    • value
      • value
        • value
      适用于嵌套数据较少的相对较小的对象。我只有php背景。我现在是javascript或jquery的新生儿,我想我会处理原始数据,但我会看一看谢谢你的建议我只有php背景,我现在是javascript或jquery的新生儿我想我会处理原始数据,但我会看一看谢谢你的建议