我有一个来自服务器的 json(无法更改),我需要构建一个嵌套的无序列表菜单。
这是jsFiddle - 警告!需要很长时间才能运行,这只是示例数据 - 真实的东西要大得多。
不知何故,它搞砸了,我最终得到了很多不合适的东西,而且它需要永远运行。
编码:
$.each(jData, function (k, v) {
var vendor = JSON.stringify(k);
vendor = vendor.replace(/"/g, '');
var vendorRow = '<li data-vendor="' + vendor + '" class="listItem v">' + vendor + '</li>';
$('ul#vendors').append(vendorRow);
$('ul#vendors li[data-vendor="'+vendor+'"]').append('<ul class="sub hide"/>');
var getArea = _.groupBy(jData[vendor], 'area');
$.each(getArea, function(k, v) {
var area = JSON.stringify(k);
area = area.replace(/"/g,'');
var thisArea = '<li data-area="'+area+'" class="listItem a">'+area+'</li>';
$('ul#vendors li[data-vendor="'+vendor+'"] ul.sub').append(thisArea);
$('ul#vendors li[data-area="'+area+'"]').append('<ul class="sub hide"/>');
var getRegion = _.groupBy(getArea[area], 'region');
$.each(getRegion, function(k, v) {
var region = JSON.stringify(k);
region = region.replace(/"/g,'');
var thisRegion = '<li data-region="'+region+'" class="listItem a">'+region+'</li>';
$('ul#vendors li[data-area="'+area+'"] ul.sub').append(thisRegion);
$('ul#vendors li[data-region="'+region+'"]').append('<ul class="sub hide"/>');
var getMarket = _.groupBy(getRegion[region], 'market');
$.each(getMarket, function(k, v) {
var market = JSON.stringify(k);
market = market.replace(/"/g,'');
var thisMarket = '<li data-market="'+market+'" class="listItem m">'+market+'</li>';
$('ul#vendors li[data-region="'+region+'"] ul.sub').append(thisMarket);
$('ul#vendors li[data-market="'+market+'"]').append('<ul class="sub hide"/>');
var getSwitch = _.groupBy(getMarket[market], 'switch');
$.each(getSwitch, function(k, v) {
var vSwitch = JSON.stringify(k);
vSwitch = vSwitch.replace(/"/g,'');
var thisSwitch = '<li data-switch="'+vSwitch+'" class="listItem s">'+vSwitch+'</li>';
$('ul#vendors li[data-market="'+market+'"] ul.sub').append(thisSwitch);
});
});
});
});
});
示例输出:
<div id="chartWizard">
<ul id="vendors">
<li class="listItem v" data-vendor="levdore">
levdore
<ul class="sub hide">
<li class="listItem a" data-area="Midwest">
Midwest
<ul class="sub hide">...</ul>
<ul class="sub hide">...</ul>
<ul class="sub hide">...</ul>
</li>
</ul>
</li>
</ul>
</div>
该列表似乎在第二个 ul.sub 中分崩离析,其中包含多个 ul.sub 元素,而这些元素应该只有一个。