我的页面上有一个嵌套的无序列表,如下所示:
<ul id="myList">
<li><a href="link">Item 1</a></li>
<li><a href="link">Item 2</a>
<ul>
<li><a href="link">Sub Item 1</a></li>
<li><a href="link">Sub Item 2</a>
<ul>
<li><a href="link">Sub Sub Item 1</a></li>
<li><a href="link">Sub Sub Item 2</a></li>
</ul></li>
<li><a href="link">Sub Item 3</a></li>
</ul>
<li><a href="link">Item 3</a></li>
</ul>
我需要将它导入到这样的javascript数组中:
var topLevel = ["Item 1", "Item 2", "Item 3"]
var subLevel = [
[],
["Sub Item 1", "Sub Item 2", "Sub Item 3"],
[],
]
var subSubLevel = [
[],
[
[],
["Sub Sub Item 1", "Sub Sub Item 2"],
[]
],
[]
]
我从这开始,但它没有给我我需要的嵌套数组。
var topLevelList = $("#myList > li > a").map(function() { return $(this).text(); }).get();
var subLevelList = $("#myList > li > ul > li > a").map(function() { return $(this).text(); }).get();
var subSubLevelList = $("#myList > li > ul > li > ul > li > a").map(function() { return $(this).text(); }).get();
答案 0 :(得分:0)
以下是我最终要做的事情,对于将来搜索类似内容的人来说......
_build = function(t){
return {
'name':$(t).find('> a').html(),
'url':$(t).find('> a').prop('href'),
'target':$(t).find('> a').prop('target'),
'sub-items':[]
};
}
var theStuff = [];
$('#interactiveList').find('> li').each(function(){
var li_a = _build($(this));
var b = $(this).children().find('> li');
if (b) {
b.each(function(){
var li_b = _build($(this));
var c = $(this).find('> ul li');
if (c) {
c.each(function(){
var li_c = _build($(this));
li_b['sub-items'].push(li_c);
});
}
li_a['sub-items'].push(li_b);
});
}
theStuff.push(li_a);
});