以下是我擁有的示例html。JQuery如何選擇ul中沒有特定類別的所有li項目
<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類呢?
同時檢查[':不()'選擇(http://api.jquery.com/not-selector/) - 在IE慢,與CSS3支持的瀏覽器速度更快([見結果](http://jsperf.com/jquery-css3-not-vs-not)) – 2011-05-17 19:00:50
@Neal:他想匹配html的第一個版本(所以沒有'a'和'.parent()') – 2011-05-17 19:03:57
@丹我不知道這一點。也不要假設OP是'he' – Neal 2011-05-17 19:05:51