jQuery - 简单的过滤系统 - 如何选择没有某些类的元素?

时间:2011-10-12 13:25:09

标签: jquery filter traversal

我正在尝试构建一个简单的jQuery过滤系统来显示和隐藏各种类别的元素。

问题是某些元素属于多个类别,即使其中一个过滤器已关闭,也应保持可见。

我能想到的最合乎逻辑的解决方案是,在切换过滤器项目后,查看哪些类别仍设置为可见,并隐藏不合适的元素。

因此我的问题在于试图弄清楚如何选择没有任何给定类的元素。

我正在尝试查找已检查的类别(每个过滤条目都有一个ID: filter-category_name ):

$('.filter-checked').each(function(){
    checkedCategories = checkedCategories + ('.' + $(this).attr('id').replace('filter','category'));
});

然后淡出没有不再检查的项目类的元素:

$(filterCategory).filter(function(){
return $(not(checkedCategories));
}).fadeTo(500,0.1);

其中:

var filterCategory = '.'+$(this).attr('id').replace('filter','category');

(这是点击的过滤条目)

我认为主要的问题在于试图找到那些没有任何类别仍然被检查的项目的项目,但除了解决当前解决方案的问题,如果有明显的更多解决这个问题的优雅方式会很棒。

谢谢!

2 个答案:

答案 0 :(得分:1)

我相信你所寻找的不是方法: http://api.jquery.com/not/

您将为其提供一个选择器,其中包含您要从原始选择中排除的类。

答案 1 :(得分:0)

你可以检查项目是否具有某种类别

假设类名是'foo',而元素id是'something'

if($('#something').hasClass('foo')){
   //if this element has class foo
}
else{
   //if this element dont have class foo
}

在这里查看http://jsfiddle.net/uhSKm/