У меня есть такой HTML-код:
<h2>H2 A</h2>
<h3>H3 A</h3>
<h3>H3 B</h3>
<h2>H2 B</h2>
<h3>H3 C</h3>
<h3>H3 D</h3>
Я пытаюсь перебрать (например :) набор H2s: найти все H3 ПОД H2;затем перейдите к следующему H2 и сделайте то же самое.Но я хочу сделать это (вероятно) рекурсивно и для всех заголовков в целом (то есть H + уровень и H + уровень + 1; h3 и h4, h4 и h5 и т. Д.) .Но до сих пор у меня не было успеха.
Мой код следующий, я думал, что использование nextUntil сделает работу, но это делает каждый итерацией по всем элементам:
function renderHeadingStructure(level, parent)
{
$('h'+level)/*.nextUntil('h'+level).*/each(function(i,el){
// Copy item name to parent in list - now it is missing creating of an UL :- /
li = document.createElement('li');
li.innerHTML = el.innerHTML;
parent.appendChild(li);
// Here would be handy something like:
// -> If crossed over H+level-1 (while going trough H+level)
// -> then create an ul, recurse and then break
if(level<6)
renderHeadingStructure(level+1,li);
});
}
Результирующая структура должна быть такой:
<ul>
<li><a>H2 A</a>
<ul>
<li><a>H3 A</a></li>
<li><a>H3 B</a></li>
</ul>
</li>
<li><a>H2 B</a>
<ul>
<li><a>H3 C</a></li>
<li><a>H3 D</a></li>
</ul>
</li>
</ul>
Результат с кодом выше: первый H2 и все четыре H3, затем второй H2 и все четыре снова H3 - все вравно ли.
Может кто-нибудь дать мне совет или помочь решить проблему?Спасибо, любезно