2010-10-25 68 views
0

我在左侧有一些过滤器。每个过滤器都有一个ID。该筛选器的ID用于筛选某些结果的类中具有该筛选器的ID。用于搜索类的JQuery优化

过滤器是指产品的特性..例如

<a id="filter_colorRED">RED</a> 

... 

<li id="item4" class="filter_colorBLUE">Blah Blah</li> 
<li id="item5" class="filter_colorRED ">Blah Blah</li> 
<li id="item6" class="filter_colorRED filter_colorBLACK">Blah Blah</li> 

我找找到该过滤器应该被禁用的最佳方法。禁用的过滤器应该是不存在于可见项目类中的过滤器。

例如,如果应用了colorBlue,则应禁用RED和BLACK,因为只有具有BLUE类的<li>不包含RED或BLACK。

我唯一的想法是每个过滤器检查结果.hasclass(filter's id)但我认为这是可怜的。任何其他想法?

+1

对不起,我不知道你在说什么。请更好地描述你的问题。当你的意思是“CSS class”时,不要谈论“过滤器”,这是令人困惑的。 – Tomalak 2010-10-25 09:27:02

+0

你可以提供标记吗?读完这3次后,我不确定你在做什么。 – 2010-10-25 09:27:44

+0

现在更正... – GorillaApe 2010-10-25 09:51:11

回答

1

简单的方法:

$("a").click(function() { 
    $("li").hide().hasClass(this.id).show(); 
}); 

您也可以选择变体:

$("a").click(function() { 
    var a = this; 
    $("li").toggle(function() { return $(this).hasClass(a.id); }); 
}); 

toggle()接受的是,为了显示或隐藏的元素返回true或false的功能。你可以在toggle()函数中做一些更复杂的计算。如果你只是检查hasClass(),第一种方法是更好的。