Using jQuery and Bootstrap I've created a simple filtering functionality. The code is below as well the jsFiddle. But somehow it doesn't work = doesn't show results. Despite the fact there are elements that should meet the criteria. What is wrong then?
$(document).ready(function() {
$(".filters-1 li").click(function() {
$(".filters-1 li").removeClass("active");
$(this).addClass("active");
});
$(".filters-2 li").click(function() {
$(".filters-2 li").removeClass("active");
$(this).addClass("active");
});
$('.filters ul li a').on('click', function() {
var category_list = [];
$(this).each(function() {
var category = $(this).val();
// console.log(category);
category_list.push(category);
});
if (category_list.length == 0)
$('.filtered-content').fadeIn();
else {
$('.filtered-content').each(function() {
platform = $(this).attr('data-platform');
genre = $(this).attr('data-genre');
if (jQuery.inArray(platform, category_list) > -1 && jQuery.inArray(genre, category_list) > -1)
$(this).fadeIn('slow');
else
$(this).hide();
});
}
});
});
.list-group-item a {
text-decoration: none;
color: grey;
}
.active {
background: pink!important;
border: red!important;
-webkit-transition: background-color 200ms linear;
-ms-transition: background-color 200ms linear;
transition: background-color 200ms linear;
}
.active a {
color: #fff;
font-weight: bold;
}
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.1/css/bootstrap.min.css">
<div class="container py-3">
<div class="row filters">
<div class="col">
<p>Type filters</p>
<ul class="list-group list-group-horizontal filters-1" data-filter="platform">
<li class="list-group-item active">
<a href="#" data-reset="platform">ALL</a>
</li>
<li class="list-group-item">
<a href="#" data-platform="dvd">DVDs</a>
</li>
<li class="list-group-item">
<a href="#" data-platform="book">Books</a>
</li>
<li class="list-group-item">
<a href="#" data-platform="comicbook">Comicbooks</a>
</li>
</ul>
</div>
<div class="col">
<p>Genre filters</p>
<ul class="list-group list-group-horizontal filters-2" data-filter="genre">
<li class="list-group-item active"><a href="#" data-reset="genre">ALL</a></li>
<li class="list-group-item"><a href="#" data-genre="comic">Comic</a></li>
<li class="list-group-item"><a href="#" data-genre="drama">Drama</a></li>
<li class="list-group-item"><a href="#" data-genre="comedy">Comedy</a></li>
<li class="list-group-item"><a href="#" data-genre="poetry">Poetry</a></li>
</ul>
</div>
</div>
<div class="row filtered-content">
<div class="col-lg-3 py-2 px-2 object" data-platform="dvd" data-genre="drama">
<img src="https://picsum.photos/id/237/200" alt="Random image" class="img-fluid" />
</div>
<div class="col-lg-3 py-2 px-2 object" data-platform="book" data-genre="comedy">
<img src="https://picsum.photos/id/267/200" alt="Random image" class="img-fluid" />
</div>
<div class="col-lg-3 py-2 px-2 object" data-platform="comicbook" data-genre="comic">
<img src="https://picsum.photos/id/287/200" alt="Random image" class="img-fluid" />
</div>
<div class="col-lg-3 py-2 px-2 object" data-platform="comicbook" data-genre="comic">
<img src="https://picsum.photos/id/537/200" alt="Random image" class="img-fluid" />
</div>
<div class="col-lg-3 py-2 px-2 object" data-platform="book" data-genre="comedy">
<img src="https://picsum.photos/id/937/200" alt="Random image" class="img-fluid" />
</div>
<div class="col-lg-3 py-2 px-2 object" data-platform="dvd" data-genre="poetry">
<img src="https://picsum.photos/seed/picsum/200" alt="Random image" class="img-fluid" />
</div>
<div class="col-lg-3 py-2 px-2 object" data-platform="dvd" data-genre="drama">
<img src="https://picsum.photos/id/117/200" alt="Random image" class="img-fluid" />
</div>
</div>
</div>
I've doubled checked if there are any typos in doing the js code as well checked the HTML code. But have no clue why it doesn't work.