整理および分析する必要がある情報のデータベースとして、ネストされた html 順序なしリストの構造をとろうとしています。jQueryを使用して情報をフィルタリング、カウント、および提示しようとしています。私は、リストが非常にきれいになるように、クラスまたは ID 属性を持たないように努めています。ルートのみが次のようなクラスまたは 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>
私の質問は、li の子および孫の ul (つまり、そのサブリスト) のテキストを選択せずに、li の直接の子テキスト ノードを選択するにはどうすればよいですか? たとえば、上記の html リストから、第 2 レベルのすべてのテキスト ノードのリストを作成したいと考えています。
- 最初の第 2 レベル要素
- 2 番目の第 2 レベル要素
- 3 番目の第 2 レベル要素
または、第 3 レベルのすべてのテキスト...など。これにより、特定のレベルのアイテムをリストしてカウントすることができます。私が行った最も近いものは次のとおりです。
// to select items in second but not third level
$('ul#root ul').not('ul#root ul ul').children('li')
しかし、これは柔軟なソリューションではありません。リストに多くのレベル (たとえば 7 つ) がある場合はどうなるでしょうか? 6 番目のレベルを選択するには、次のようにする必要があります。
// 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')
他に方法があるはずですが、見つけられませんでした。どんな提案でも大歓迎です。