stackoverflow 启发了我使用复选框构建“类别过滤器”,但我坚持了一半。我想实现以下目标:三个类别(品牌、类别、颜色)由表内的三个“复选框列”表示:
<table id="filters" width="620px">
<tr>
<td width="144" align="left" valign="top">
<input type="checkbox" value="Audi" id="filter-Audi" >Audi<br>
<input type="checkbox" value="BMW" id="filter-BMW" >BMW<br>
</td>
<td width="233" align="left" valign="top">
<input type="checkbox" value="Compact" id="filter-Compact" >Compact<br>
<input type="checkbox" value="Limousine" id="filter-Limousine" >Limousine<br>
<input type="checkbox" value="SUV" id="filter-SUV" >SUV<br>
<input type="checkbox" value="Sport" id="filter-Sport" >Sport<br>
</td>
<td width="233" align="left" valign="top">
<input type="checkbox" value="silver" id="filter-silver" >silver<br>
<input type="checkbox" value="blue" id="filter-blue" >blue<br>
<input type="checkbox" value="red" id="filter-red" >red<br>
<input type="checkbox" value="white" id="filter-white" >white<br>
</td>
</tr>
</table>
根据选中的复选框,我想显示包含与选中的复选框 ID 相同的类名的某些 div。这已经在起作用了。我现在需要的是一种为每个类别制定“排除”过滤器的方法。
意味着,如果用户检查以下内容:
Audi & Limousine & red – 只有包含这些类别的 div 才会出现。在我的示例中,所有包含 Audi & Limousine & red apper 的 div 但当然也会出现 BMW div(这是错误的)。
换句话说:我需要一个额外的“过滤方法”,其中包括按每个类别分层的类:即:如果用户选中奥迪,第二和第三类别的复选框应该只引用包含奥迪的 div 类。如果用户选中 Audi & Compact & white,则出现的 div 至少必须包含所有三个类。
到目前为止的 jQuery 部分(在 stackoverflow 上找到了这个):
$("#filters :checkbox").click(function() {
var re = new RegExp($("#filters :checkbox:checked").map(function() {
return this.value;
}).get().join("|"));
$.each($('.filterme'), function() {
var $this = $(this);
$this[re.source != "" && re.test($this.attr("class")) ? "slideDown" : "slideUp"]();
});
});
我将现有代码推送到 jsfiddle:
如果有人可以在这里提供帮助,我会很高兴!