-1

如果我有这样的标记:

<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>
<li class="supress hidden"></li>

我可以通过以下方式删除 class="hidden":

if ($('.supress').hasClass('hidden')) {
    $('.supress').removeClass('hidden');
}   

编辑:在我尝试之前:

if ($('.supress:lt(5)').hasClass('hidden')) {
    $('.supress').removeClass('hidden');
}   

但是如果我只想从前五个项目中删除“隐藏”类怎么办?

4

5 回答 5

9
$(".supress.hidden:lt(5)").removeClass('hidden')
于 2012-12-12T18:03:24.510 回答
6

您可以获得具有多个类的元素,因此您无需检查是否具有类。

$('.supress.hidden').slice(0,5).removeClass('hidden');
于 2012-12-12T18:03:13.073 回答
5

我会使用$.slice来削减前 5 个:

$('.supress.hidden').slice(0, 5).removeClass('hidden');

虽然您可以将:lt选择器用于相同的结果,但不建议在其自己的页面上使用:

因为:lt()是 jQuery 扩展而不是 CSS 规范的一部分,所以使用 :lt() 的查询不能利用原生 DOM querySelectorAll() 方法提供的性能提升。为了在现代浏览器中获得更好的性能,请改用 $("your-pure-css-selector").slice(0, index)

于 2012-12-12T18:03:02.683 回答
2
$('.supress').each(function(i){
     if(i < 5 && $(this).hasClass('hidden')){
          $(this).removeClass('hidden');
     }
});
于 2012-12-12T18:02:51.763 回答
0

jQuery 提供了很多方法来做到这一点:

于 2012-12-12T18:07:40.893 回答