2011-10-12 87 views
0

我想構建一個簡單的jQuery過濾器系統來顯示和隱藏各種類別的元素。jQuery - 簡單的過濾系統 - 如何選擇沒有特定類的元素?

問題是某些元素屬於多個類別,即使其中一個過濾器關閉,也應保持可見。

我能想到的最合理的解決方案是,在切換過濾項目後,查看哪些類別仍然設置爲可見,並隱藏不可見的元素。

因此,我的問題在於試圖弄清楚如何選擇沒有任何給定類的元素。

我試圖找到檢查類別(每個過濾器項目都有一個ID:過濾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'); 

(這是被點擊的過濾器項目)

我在想,主要的問題在於試圖找到具體項目,沒有任何類別的項目,仍然檢查,但除了解決問題用我目前的解決方案,如果有一個明顯的,更優雅的方式來解決這個問題,那將是太棒了。

謝謝!

回答

1

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

你會p使用選擇器將其與要從原始選擇中排除的類相關聯。

+0

我已經在過濾器中使用了not方法,應該如何使用not方法來正確地執行我所需要的操作? – waffl

+0

好吧,我設法弄清楚了,我用過濾器過濾了一些東西。簡單地通過不使用和選擇多個類,它的工作! $(filterCategory).not(checkedCategories).fadeTo(500,0.1);' – waffl

+0

嗯,除了現在我有一個問題,其中not方法只是作爲一個AND(這是否有意義?) - 我只想選擇**不包含任何** **的**類**的元素,但它看起來像傳遞not方法多個類只返回不包含** all **的元素checkedCategories ...任何想法? – waffl

0

U或可以檢查的項目有一定的階級不喜歡這個

假設類名是「富」和元素的ID是「東西」

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

看看這裏http://jsfiddle.net/uhSKm/

+0

嗨,我看着hasClass,但不能看到如何將它應用到我需要找到一些元素並查看它是否不包含**多個**類然後執行的情況對這些項目採取行動? – waffl

相關問題