【发布时间】:2011-07-15 01:55:48
【问题描述】:
我有一组嵌套的 ul,如下所示:
<ul id="educationList">
<li class="category"><p>Media production</p>
<ul>
<li class="education" style="display: block;">
<a href="#">Real time 3D animation</a>
</li>
<li class="education" style="display: block;">
<a href="#">Filming with Steadicam</a>
</li>
<li class="education" style="display: block;">
<a href="#">Sound Effects</a>
</li>
</ul>
</li>
</ul>
顶部的 ul (educationList) 包含一个类别列表,每个类别都有一个子列表 (ul),其中包含在该类别下排序的教育。经典的嵌套列表结构。在上面的示例代码中,我只有一个类别——在实际代码中,有很多类别。
我有一个 jQuery 过滤功能,可以显示/隐藏具有“教育”类的 li 元素(子列表元素)。有时这个过滤函数会隐藏所有子列表元素,所以 HTML 看起来像这样:
<ul id="educationList">
<li class="category"><p>Media production</p>
<ul>
<li class="education" style="display: none;">
<a href="#">Real time 3D animation</a>
</li>
<li class="education" style="display: none;">
<a href="#">Filming with Steadicam</a>
</li>
<li class="education" style="display: none;">
<a href="#">Sound Effects</a>
</li>
</ul>
</li>
</ul>
不同之处在于所有子列表元素现在都具有内联样式display: none。突然之间,我对“类别”类的父母 li 没有真正的用处,因为该类别下没有教育。
现在我正在寻找一种智能方法来查找没有可见儿童教育列表项的所有类别列表项,并简单地隐藏类别列表项。每次进行任何过滤时,我都必须运行此功能,因为过滤会影响儿童教育列表项——一些可见的将被隐藏,而一些隐藏的将再次可见。
另外 - 我会有很多元素,所以如果代码不是太耗费资源,这是一个优势。不过,现在不是挑剔的时候。任何解决方案都可以,我将不得不稍后进行优化。
提前致谢! /托马斯·卡恩
【问题讨论】:
标签: jquery nested hide element show