隨著前端開(kāi)發(fā)技術(shù)的日益發(fā)展,jQuery作為一種非常常用的JS框架,被越來(lái)越多的開(kāi)發(fā)者所接受和使用。在實(shí)現(xiàn)前端頁(yè)面的時(shí)候,很多情況下需要遍歷JSON對(duì)象,并以樹(shù)狀結(jié)構(gòu)展示出來(lái)。而在jQuery中,可以輕松地實(shí)現(xiàn)這一需求。
首先,我們需要準(zhǔn)備好一個(gè)JSON對(duì)象,它包含了我們需要展示的數(shù)據(jù)。假設(shè)我們的JSON對(duì)象如下:
var treeData = [ { "name": "Fruit", "type": "folder", "children": [ { "name": "apple", "type": "item" }, { "name": "orange", "type": "item" } ] }, { "name": "Vegetable", "type": "folder", "children": [ { "name": "carrot", "type": "item" }, { "name": "broccoli", "type": "item" } ] } ];
接下來(lái),我們使用jQuery來(lái)遍歷這個(gè)JSON對(duì)象,并將它轉(zhuǎn)化為樹(shù)狀結(jié)構(gòu)。代碼如下:
function buildTree(el, data) { var markup = '<ul>'; $.each(data, function(index, item) { markup += '<li>'; if(item.type === 'folder') { markup += '<div class="folder">' + item.name + '</div>'; markup += buildTree('<ul>', item.children); } else { markup += '<div class="item">' + item.name + '</div>'; } markup += '</li>'; }); markup += '</ul>'; return el.append(markup); } buildTree($('#tree'), treeData);
在這段代碼中,我們定義了一個(gè)名為buildTree的函數(shù),它接受兩個(gè)參數(shù),一個(gè)是需要生成樹(shù)狀結(jié)構(gòu)的目標(biāo)元素(el),另一個(gè)是包含數(shù)據(jù)的JSON對(duì)象(data)。我們使用jQuery的each方法遍歷JSON對(duì)象中的數(shù)組,根據(jù)type屬性的值來(lái)判斷是文件夾還是文件,并在對(duì)應(yīng)的節(jié)點(diǎn)上添加相應(yīng)的class名和文本內(nèi)容。對(duì)于文件夾類型,我們使用遞歸的方式生成內(nèi)部的節(jié)點(diǎn)樹(shù)。
最后,我們將生成的樹(shù)狀結(jié)構(gòu)插入到目標(biāo)元素中,完成了整個(gè)過(guò)程。