Я пытаюсь взять структуру вложенных неупорядоченных списков HTML в качестве базы данных для некоторой информации, которую необходимо систематизировать и проанализировать. Я пытаюсь отфильтровать, посчитать и представить информацию, используя jQuery. Я стараюсь, чтобы списки не имели какого-либо атрибута class или id, чтобы они были очень чистыми. Только корень будет иметь класс или идентификатор, например:
<ul id="root">
<li> First first-level element
<ul>
<li> First second-level element
<ul>
<li>First Third-level element</li>
<li>Second Third-level element</li>
</ul>
</li>
<li> Second second-level element
<ul>
<li>Third Third-level element</li>
<li>Fourth Third-level element</li>
</ul>
</li>
</ul>
</li>
<li> Second first-level element
<ul>
<li> Third second-level element
<ul>
<li>Fifth Third-level element</li>
</ul>
</li>
</ul>
</li>
</ul>
Мой вопрос: как я могу выбрать непосредственный дочерний текстовый узел ли, не выделяя текст в дочернем и внуков этого ли (то есть в его подсписках)? Например, учитывая приведенный выше список html, я хотел бы иметь возможность составить список всех текстовых узлов второго уровня:
- Первый элемент второго уровня
- Второй элемент второго уровня
- Третий элемент второго уровня
Или весь текст с третьего уровня ... и т. Д. Это позволило бы мне перечислять и подсчитывать предметы на данном уровне. Ближе всего я был:
// to select items in second but not third level
$('ul#root ul').not('ul#root ul ul').children('li')
Но это не гибкое решение. Что если в списке много уровней, скажем, семь? чтобы выбрать шестой уровень, вам нужно сделать что-то вроде:
// to select items in second but not third level
$('ul#root ul ul ul ul ul').not('ul#root ul ul ul ul ul ul').children('li')
Должен быть другой путь, но я его не нашел. Любые предложения приветствуются.