2

jQueryで、特定のクラスを含むすべてのコンテンツをフィルタリングするにはどうすればよいですか?

HTML:

<div class='item 10'>10</div>
<div class='item 20'>20</div>
<div class='item 30'>30</div>
<div class='item 40'>40</div>
<div class='not-an-item 50'>50</div>

私が試したこと:

var classList = $(".item").attr('class').split(/\s+/);
if(classList[1] == '10' || lassList[1] == '30'){
    $(".item").hide();

}

正しい出力:

<div class='item 20'>20</div>
<div class='item 40'>40</div>
<div class='not-an-item 50'>50</div>
4

3 に答える 3

7

.has()メソッドまたはメソッドを使用して.not()、要素のセットを減らすことができます。.has()特定のセレクターに一致するすべての要素を保持.not()し、セレクターに一致しないすべての要素を保持します。

より高度なフィルタリングについては、この.filter()メソッドを使用できます。

あなたの質問を正しく理解していれば.filter()、フィルタリング機能を使用できます。このようなもの:

$(".item").filter(function() {
   return !($(this).hasClass("10") || $(this).hasClass("30"));
}).hide();
于 2012-08-26T10:28:06.577 に答える
2
function hideItem(target) {
    $('div.item').filter(function() {
        var num = parseInt( this.className.split(/\s/)[1], 10 );
        if(target instanceof Array) {
          return $.inArray(num, target) >= 0; 
        } else return num > target;  
    }).hide();
}
hideItem([10,30]); // will hide item with class 10 and 30 
                   // and you can give any number of class

itemしかし、クラスで非表示にしたい場合は> 20(仮定)、次のように呼び出します。

hideItem(20);
于 2012-08-26T10:59:06.810 に答える
1

このように試すことができます。

$("div.item").hide();
$("div.item").not('div.10, div.30').show();

フィドルデモ

于 2012-08-26T10:29:11.270 に答える