Вы допустили пару ошибок.
В выписке if
нужно указать this.checked == true
. this.checked
дает вам true
и false
, вам нужно указать, что вы ищете.
Также нет необходимости в фильтре, вы можете выполнять фильтрацию в своем селекторе элементов (ведьма также не нацеливалась правильно ):
$(".cards-list .card[data-category="+value+"]")
если вы сложите .cards-list.card
вместе, это означает, что они находятся рядом друг с другом, в вашем случае .card
находится внутри .cards-list
.
$(".cardCheckBox").change(function () {
var value = $(this).val();
//console.log(value);
if (this.checked == true) {
//console.log(true);
$(".cards-list .card[data-category="+value+"]").hide();
}else{
$(".cards-list .card[data-category="+value+"]").show();
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- FILTER CHECKBOX -->
<div class="form-check">
<input class="cardCheckBox" type="checkbox" value="foo">
</div>
<div class="form-check">
<input class="cardCheckBox" type="checkbox" value="xyz">
</div>
<!-- CARDS LIST I WANT TO FILTER -->
<div class="cards-list mt-2">
<div class="card" data-category="foo">
<div class="card-body">
<h2>card title foo</h2>
</div>
</div>
<div class="card" data-category="xyz">
<div class="card-body">
<h2>card title xyz</h2>
</div>
</div>
<div class="card" data-category="foo">
<div class="card-body">
<h2>card title foo</h2>
</div>
</div>
</div>