treeData轉listData

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="jquery-1.8.3.js"></script>
</head>
<body>
<div>
    <ul class="main"></ul>
</div>
<script>
var treeData={
    id:971,
    pid:-1,
    value:'中國',
    child:[
        {pid:971,id:191,value:'安徽',
            child:[{pid:191,id:292,value:'合肥',
                child:[{pid:292,id:393,value:'肥東',
                    child:[{pid:393,id:494,value:'龍泉路',
                        child:[{pid:494,id:595,value:'文一國際'},
                               {pid:595,id:57810,value:'天都城',child:[
                                    {pid:57810,id:533234595,value:'10棟5樓'}
                                ]}
                        ]
                    }]
                }]
            },[
                {pid:191,id:797,value:'黃山',child:[
                    {pid:797,id:999,value:'徽州區'}
                ]}
            ]
            ]},
        {pid:971,id:11,value:'四川',
            child:[{pid:11,id:22,value:'成都',
                child:[{pid:22,id:33,value:'雙流',
                    child:[{pid:33,id:44,value:'華陽',
                        child:[{pid:44,id:55,value:'天府大道'}]
                }]
            }]
        },[
                {pid:11,id:77,value:'南充',child:[
                    {pid:77,id:99,value:'南部'}
                ]}
            ]
    ]}]css

};html

function setListLeft(treeData){
    var step =30;
    var cache =[];
    fn(treeData);
    function fn(data,n){
        n=n?n:0;
        var temp={};
        if(typeof(data)=='object'){
            if((data instanceof Array)){
                for(var i =0 ;i <data.length ;i++){
                    fn(data[i],n);
                }
            }else if((data instanceof Object)){
                for(var k in data){
                    if(!('left' in data)){
                        data['left']=n+=step;
                    }
                    if(('id' in data) && !('flag' in data)){
                        temp = $.extend(false,temp,data);
                        delete temp.child;
                        data['flag']=true;
                        cache.push(temp);
                    }
                    fn(data[k],n);
                }
            }
        }else{
            //console.log(data);
        }
    }
    return cache;
}jquery

var liData =setListLeft(treeData);
var temp =$('<div></div>');
for(var k =0;k<liData.length;k++){
    temp.append($('<li></li>').css({paddingLeft:liData[k].left+'px'}).html(liData[k].value));
}
$('.main').append(temp.find('li'));app


</script>
</body>
</html>htm

相關文章
相關標籤/搜索