我正在尝试将嵌套 html 无序列表的结构作为数据库来获取需要组织和分析的一些信息。我正在尝试使用 jQuery 过滤、计数和呈现信息。我正在努力使列表没有任何 class 或 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 的直接子文本节点而不选择该 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')
一定有其他方法,但我还没有找到。任何建议都非常感谢。