这个问题是这个问题的进一步发展:
用于隐藏和显示 div(产品过滤)的 jQuery 简单复选框, ManseUK 给出了出色的回答
ManseUK 的解决方案支持按单个类别(特别是流派)进行产品过滤,但对于我当前的项目,我需要按 2 个类别进行排序:颜色和大小。通过修改 ManseUK 的解决方案,我几乎可以让它工作,但是当我选择了两个过滤器时它会失败 - 在这个例子中,选择“青色”和“xl”应该只显示 xl 青色,但它会显示两个青色而不是 xl 青色。我正在使用的代码如下:
HTML:
<input type="checkbox" id="cyan" value="cyan" /> Cyan<br />
<input type="checkbox" id="magenta" value="magenta" /> Magenta<br />
<input type="checkbox" id="black" value="black" /> Black<br />
<input type="checkbox" id="xl" value="xl" /> XL<br />
<!--------------------->
<div class="products">
<div class="productItem" data-price="250" data-category="cyan">
Cyan Ink
<div class="productItemPrice"><span>£250</span></div>
</div>
<div class="productItem" data-price="150" data-category="magenta">
Magenta Ink
<div class="productItemPrice"><span>£150</span></div>
</div>
<div class="productItem" data-price="250" data-category="black">
Black Ink <div class="productItemPrice"><span>£250</span></div>
</div>
<div class="productItem" data-price="241" data-category="cyan" data-size="xl">
XL Cyan Ink
<div class="productItemPrice"><span>£241</span></div>
</div>
</div>
<!--------------------->
CSS:
.productItem{float:left;padding:5px;margin:5px;border:1px solid #eaeaea}
body{font-family:verdana}
JS:
$('input[type="checkbox"]').click(function() {
if ($('input[type="checkbox"]:checked').length > 0) {
$('.products >div').hide();
$('input[type="checkbox"]:checked').each(function() {
$('.products >div[data-category=' + this.id + ']').show();
$('.products >div[data-size=' + this.id + ']').show();
});
} else {
$('.products >div').show();
}
});
我可以看到 js 正在对要显示的 div 执行逻辑 OR - 我怎样才能使它成为 AND?