Fro*_*lan 8 html jquery nested-lists html-lists
我正在尝试将嵌套的html无序列表结构作为数据库,以便组织和分析一些需要的信息.我正在尝试使用jQuery过滤,计数和呈现信息.我正在努力使列表没有任何class或id属性,因此它们非常干净.只有root会有这样的类或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>
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何选择li的直接子文本节点而不选择该li的子孙和ul(即其子列表)中的文本?例如,根据上面的html列表,我希望能够提供第二级中所有文本节点的列表:
或者来自第三级的所有文本......等等.这将允许我列出和计算给定级别的项目.我最接近的是:
// to select items in second but not third level
$('ul#root ul').not('ul#root ul ul').children('li')
Run Code Online (Sandbox Code Playgroud)
但它不是一个灵活的解决方案.如果列表有多个级别,比如七个怎么办?要选择第六级,你必须做以下事情:
// 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')
Run Code Online (Sandbox Code Playgroud)
必须有另一种方式,但我还没有找到它.任何建议都非常感谢.
如果你想选择第二个 li 例如<li> Second second-level element,你可以使用>子选择器,eq如下所示:
$('ul#root > ul > li').eq(1)
Run Code Online (Sandbox Code Playgroud)
对于第三个,您设置eq为2,因为它的索引从 开始0。
要循环它们,您可以使用each如下所示:
$('ul#root > ul > li').eq(1).each(function(){
alert($(this).text());
});
Run Code Online (Sandbox Code Playgroud)
更多信息:
| 归档时间: |
|
| 查看次数: |
6961 次 |
| 最近记录: |