次のような 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
私の実際のコードは、より多くの属性とより多くのディメンション/レベルを備えた、はるかに複雑です。
これまでにかなりの数の試行を開始しましたが、サブ配列を配列の1つの項目に適切にプッシュする方法がわかりません:
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']
}
});