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 回答