2012-09-25 35 views
0

以前問題的簡化版本。我正在使用UI多選擇器小部件按類過濾產品。產品只有在其類包含與選中的複選框值相匹配的值時纔可見。如果只選中一個複選框,很容易完成。如果類名包含在數組中,則按類過濾隱藏div

的文件說,使用這種所有選中的複選框我可以映射值:

var checkedValues = $("select").multiselect("getChecked").map(function(){ 
    return this.value; 
}).get(); 

我怎麼能隱藏所有產品,除了誰是類匹配數組中的至少一個值的一個人?可能嗎?這是行不通的:

$('.main article, .error').hide(); 
$('.main article[class*=' + checkedValues + ']).show(); 

回答

4

一種便捷的方式是採取類的列表,並在

.class1, .class2, .class3, .etc 

形式構造一個CSS選擇器,您可以用代碼做到這一點非常容易像你例如和Array.join

var selector = $("select").multiselect("getChecked") 
       .map(function(){return "." + this.value; }) 
       .get() 
       .join(); 

然後,您可以讓jQuery的做繁重:

$('.main article').filter(selector).show(); 
+0

比使用類數組要乾淨得多。 – Blender

+0

我實際上有5個不同的多重選擇器,每個不同的產品類別。所以產品有五個類別。我是新來的jQuery,但試圖構建經典[選擇類別1] [選擇類別2] [選擇類別3] [GO !!]類型的形式,我在很多電子商務網站上看到,但試圖做到這一切客戶端。也許我使用了錯誤的術語,但多選擇器中的複選框值將映射到數組,而不是類。我只是想要一個聲明,說:「如果產品有一個類匹配數組中的一個選中的框值,顯示它。」 ?? – Earl1234

+0

只要'this.value'是某些產品具有的類名,那麼上面就應該可以工作。你試過了嗎? – Jon

相關問題