我正在寻找一种有效的方法来遍历包含多个级别的无序列表,其中包含.selected 类。如果一个组中的所有 UL LI 都有 class .selected,我需要添加 class .selected 子 UL 的父 LI。
<ul>
<li>one <-- this li adds class .selected if ALL its children have .selected
<ul>
<li class="selected">red</li>
<li class="selected">green</li>
<li class="selected">blue</li>
</ul>
</li>
<li>two
<ul>
<li class="selected">red</li>
<li>green</li>
<li class="selected">blue</li>
</ul>
</li>
<li>three</li>
</ul>
如果任何给定 UL 中的所有子级都具有 .selected 类,则将 .selected 类添加到父 LI,因此在这种情况下,包含文本“one”的 LI 将是唯一添加了 .selected 类的父 LI。
我需要在页面加载时发生这种情况。我尝试了很多方法,但这个方法最接近,但我不太确定它是否最有效:
$("ul li").filter(function () {
var lis_total = $(this).siblings().length + 1;
var lis_selected = $(".selected", this).siblings().length + 1;
if(lis_total == lis_selected)
return $(this).parent("li").addClass("selected");
});
我不太确定我是否做得正确。它不工作。