2010-10-25 25 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(),第一種方法是更好的。