我有四个级别的过滤器,基本上是:格式、区域、人口统计和兴趣。
<div class="form-div">
<input type="checkbox" data-filter="i-newspaper">
<input type="checkbox" data-filter="i-magazine">
</div>
<div class="form-div">
<input type="checkbox" data-filter="i-northland">
<input type="checkbox" data-filter="i-southland">
</div>
<div class="form-div">
<select>
<option value="4" data-filter="i-digital">Digital</option>
<option value="1" data-filter="i-manufacturing">Manufacturing</option>
<option value="2" data-filter="i-retail">Retail</option>
</select>
</div>
<div class="form-div">
<input data-filter="i-business-and-finance" type="checkbox">
<input data-filter="i-careers-and-education" type="checkbox">
<input data-filter="i-design-and-photography" type="checkbox">
</div>
同位素过滤器基于上面检查/选择的内容。
我正在使用这样的东西:
var selectors = [];
$(".form-div").find("input:checked, option:selected").each(function(){
selectors.push('.'+$(this).data('filter'));
});
selectors = selectors.join('');
它提供了一个选择器.i-newspaper.i-magazine.i-northland.i-southland.i-digital.i-design-and-photography
(假设这些是选中/选中的表单元素)
然而,每一个.form-div
都是一个单独的集合,所以通过上面的选择,我希望得到:
.i-newspaper.i-southland.i-digital.i-design-and-photography,
.i-newspaper.i-northland.i-digital.i-design-and-photography,
.i-magazine.i-southland.i-digital.i-design-and-photography,
.i-magazine.i-northland.i-digital.i-design-and-photography
如何实现这样的目标?
如果我的问题需要更多澄清,请告诉我...
谢谢
编辑
此问题的另一种替代解决方案是“多级”过滤。
所以按这个集合过滤:.i-newspaper, .i-magazine
然后按此集合过滤子集:i-southland, .i-northland
等等等等...
EDIT2 JsFiddle:http: //jsfiddle.net/MkME9/