早期问题的简化版本。我正在使用UI多选择器小部件按类过滤产品。仅当产品类包含与选中的复选框值匹配的值时,才会显示产品。如果只选中一个复选框,则轻松完成。
文档说我可以使用以下方法映射所有复选框的值:
var checkedValues = $("select").multiselect("getChecked").map(function(){
return this.value;
}).get();
如何隐藏所有产品,除了那个类的哪个类在该数组中至少匹配一个值?可能吗?这不起作用:
$('.main article, .error').hide();
$('.main article[class*=' + checkedValues + ']).show();
答案 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();