JQuery如何选择ul中没有特定CLASS的所有li项

时间:2011-05-17 18:54:07

标签: jquery list

以下是我的示例html。

<ul id="alist">
<li class="red">...</li>
<li class="blue">...</li>
<li class="red">...</li>
<li class="green">...</li>
</ul>

目标:选择列表中没有“红色”类的所有元素并将其淡出。

这是我到目前为止所拥有的。我知道它很接近,但是代码或选择器中的某个地方存在错误。

$('#alist :not(:has(.red))').fadeOut('slow');

我也试过

$('#alist li :not(:has(.red))').fadeOut('slow');

$('#alist :not(:has(li.red))').fadeOut('slow');

他们都没有工作(显然)。但是当我试图在ul内部过滤某些内容时。所以用html作为:

<li><a class="red">...</li>
.
.
.
<li><a class="green">...</li>

并制作了jquery选择器

$('#alist li :not(:has(a.red))').fadeOut('slow');

它有效。

那么为什么JQuery不让我过滤li类?

2 个答案:

答案 0 :(得分:6)

试试这个:

$('#alist li a').not('.red').parent().fadeOut('slow');

这将选择现在具有red作为类的所有锚标记,并淡出父li

答案 1 :(得分:3)

:has关注元素的孩子。您只需要查看元素的类本身。所以:

$('#alist :not(.red)').fadeOut('slow');