如果类名包含在数组中,则按类隐藏div

时间:2012-09-25 22:11:29

标签: jquery filter multi-select

早期问题的简化版本。我正在使用UI多选择器小部件按类过滤产品。仅当产品类包含与选中的复选框值匹配的值时,才会显示产品。如果只选中一个复选框,则轻松完成。

文档说我可以使用以下方法映射所有复选框的值:

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

如何隐藏所有产品,除了那个类的哪个类在该数组中至少匹配一个值?可能吗?这不起作用:

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

1 个答案:

答案 0 :(得分:4)

一种方便的方法是获取类列表并以

的形式构造CSS选择器
.class1, .class2, .class3, .etc

您可以使用示例和Array.join中的代码非常轻松地执行此操作:

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

然后你可以让jQuery做繁重的工作:

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