【发布时间】:2018-01-23 10:07:06
【问题描述】:
简而言之,我想将 UL 列表转换为 javascript/jquery 数组。我的问题是 UL 可以是任意长度和深度的嵌套。
这是一个 UL 示例:
<div id="main">
<ul>
<li>
<span>HOME</span>
<ul>
<li><span>Page 1</span></li>
<li><span>Page 2</span></li>
<li>
<span>Page 3</span>
<ul>
<li><span>Page a</span></li>
<li><span>Page b</span></li>
<li><span>Page c</span></li>
<li>
<span>Page X</span>
<ul>
<li><span>Page d</span></li>
<li><span>Page e</span></li>
<li><span>Page f</span></li>
<li><span>Page g</span></li>
</ul>
</li>
</ul>
</li>
<li><span>Page 4</span></li>
</ul>
</li>
</ul>
</div>
我在 jquery 中有一个基本的 each 循环,它只通过第一个嵌套。我需要它继续遍历任何有子元素的 li 和生成的数组以匹配嵌套格式:
var arr = [];
$("#main > ul > li").each(function() {
var elem = {
brand: $(this).find(">span:first").text(),
children: []
};
$(this).find(">ul>li").each(function() {
elem.children.push($(this).find('span:first').text());
});
arr.push(elem);
});
console.log(arr);
这是它的输出:
【问题讨论】:
-
请为您的标记添加预期的输出。
-
这是我的问题,UL 大小和嵌套深度可以是任何值。输出数组需要动态匹配 UL 的嵌套格式。
标签: javascript jquery html arrays loops