【发布时间】:2019-12-21 23:35:44
【问题描述】:
我创建了一个多复选框过滤器,其中有 2 个过滤器选项:性别和状态
我想要实现的是:
过滤至少具有一种状态类别的元素,但一旦检查了 GENDER,就隐藏不属于该性别的元素
例如,我通过站立和行走进行过滤(这显示所有女性和男性站立和行走),但是一旦我选中 MALE,这必须隐藏所有女性,所以它会显示所有男性站立和行走走路。
function run() {
$(".item").hide();
const checked = $(":checked");
var gender = $("[name='gender']:checked").val();
var state = $("[name='state']:checked").val();
if (checked.length === 0) {
return $(".item").show();
}
checked.each(function() {
//$(".item." + this.id).show(); //Works, but it doesn't hide the non checked gender
return $(this).hasClass(gender) || $(".item." + this.state);
}).show();
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
<div id="gender">
<input type="radio" id="male" name="gender" onclick="run()" /> Male
<input type="radio" id="female" name="gender" onclick="run()" /> Female
</div>
<div id="state">
<input type="checkbox" id="walking" name="state" onclick="run()" /> Walking
<input type="checkbox" id="standing" name="state" onclick="run()" /> Standing
</div>
<br/>
<div class="item male walking" >male walking</div>
<div class="item male standing walking">male standing and walking</div>
<div class="item standing female walking">female standing and walking</div>
<div class="item female walking">female walking</div>
【问题讨论】:
-
如果你勾选了男性,
male+female standing应该显示吗? -
好的,然后看下面的答案
-
我想如果检查男性和女性,是否应该只显示男性和女性而不是 OR
-
如果男性和女性都勾选了,是显示男性+女性的项目,还是显示男性或女性的项目?
-
@Mika 然后
but as soon as I check MALE, this has to hide all females, so it'll show all male standing and walking.不会发生
标签: javascript jquery filter