-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');
}   

しかし、最初の 5 つの項目から「非表示」クラスのみを削除したい場合はどうすればよいでしょうか?

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セレクターを使用して同じ結果を得ることができますが、独自のページでは推奨されません。

は jQuery 拡張機能であり、CSS 仕様の一部ではないため:lt()、: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 に答える