让我们假设一个这样的 HTML 结构:
<div id="relevantHeadings">
<h1>First Heading</h1>
<h2>First Subheading</h2>
<div>
<!-- for clarification that the headings are not necessarily siblings -->
<h2>Second Subheading</h2>
</div>
<h1>Second Heading</h1>
<h1>Third Heading</h1>
<h1>Fourth Heading</h1>
<h2>Third Subheading</h2>
<h1>Fith Heading</h1>
</div>
编辑:标题不一定是彼此的兄弟姐妹。
我需要的是这个:
'menu': {
'level':[
{
'label': 'First Heading',
'level' :[
{
'label': 'First Subheading'
},
{
'label': 'Second Subheading'
}]
},
{
'label': 'Second Heading'
},
{
'label': 'Third Heading'
},
{
'label': 'Fourth Heading',
'level' :[
{
'label': 'Third Subheading'
}]
},
{
'label': 'Fith Heading'
}]
}
我的实际代码要复杂得多,具有更多的属性而不是label
更多的维度/级别。
到目前为止,我已经开始了很多尝试,但我不知道如何正确地将子数组推送到数组的一项中:
this.allHeadings = $('#relevantHeadings').find('h1, h2, h3, h4, h5, h6');
this.obj = {};
this.obj['level'] = [];
this.allHeadings.each(function(i) {
if($(this).is('h1')) {
thiz.obj['level'].push(this);
} else if($(this).is('h2')) {
// create and push this one into thiz.obj['level'][i-1]['level']
}
});