http://jsfiddle.net/f9wtu/1/
这是我的版本:
var arr = [
[1, 'link1', 3],
[2, 'link2', 0],
[3, 'link3', 2]
];
function processData(list) {
var out = $('<ul>'), // or ol
idMap = {};
function get(id, text) {
var $el = idMap[id] || (idMap[id] = $('<li><a></a></li>'));
if (text) {
$el.children('a').text(text);
}
return $el;
}
function addChild($parent, $child) {
var $list = $parent.children('ul');
if (!$list.length) {
$list = $('<ul>').appendTo($parent);
}
$list.append($child);
}
var id,
text,
parentId,
$el;
for (var i = 0, l = list.length, item; i < l; i++) {
item = list[i];
id = item[0];
text = item[1];
parentId = item[2];
$el = get(id, text);
if (parentId) {
addChild(get(parentId), $el);
} else {
out.append($el);
}
}
return out;
}
$('#result').append(processData(arr));
为什么这是一个好方法:
- 一切都包装在一个函数中 -> 可重用,干净,易于维护,不添加全局变量异常函数名
- 您正在为输入(数据数组)获得所需的输出(jQuery 元素)
- 如果您查看我的代码,您可以轻松阅读并遵循我的每一行。
- 干净的代码