Filtern
Dieser Filter basiert auf einer und/oder Filterung. Jenachdem welcher Filter ausgewählt wird wird der class selector in jQuery aufgebaut. Im Grunde funktiniert es so (.filter-red.filter-round,filter-green.filter-round) - entweder hat es die klasse red und round oder green und round
- Farben
- Blau
- Rot
- Grün
- Farben
- Rund
- Quadrat
- Rechteck
Der HTML Code
<div class="tutorial-filter" style="display: flex;">
    <ul style="list-style: none; width: 200px">
        <li style="font-weight:bold">Farben</li>
        <li class="js-filter" data-type="color" data-value="blue">Blau</li>
        <li class="js-filter" data-type="color" data-value="red">Rot</li>
        <li class="js-filter" data-type="color" data-value="green">Grün</li>
    </ul>
    <ul style="list-style: none; width: 200px">
        <li style="font-weight:bold; list-style: none">Farben</li>
        <li class="js-filter" data-type="form" data-value="round">Rund</li>
        <li class="js-filter" data-type="form" data-value="square">Quadrat</li>
        <li class="js-filter" data-type="form" data-value="rectangle">Rechteck</li>
    </ul>
</div>
<div class="tutorial-filter-items" style="margin-top: 30px">
    <div class="filter-item filter-green filter-round"></div>
    <div class="filter-item filter-blue filter-round"></div>
    <div class="filter-item filter-red filter-rectangle"></div>
    <div class="filter-item filter-red filter-round"></div>
    <div class="filter-item filter-green filter-square"></div>
    <div class="filter-item filter-red filter-square"></div>
    <div class="filter-item filter-blue filter-rectangle"></div>
</div>Der CSS Code
.js-filter{
    cursor: pointer;
}
.js-filter.checked:after{
    content: " ×";
}
.filter-item{
    width: 50px;
    height: 50px;
    display: inline-block;
}
.filter-blue{
    background-color: blue;
}
.filter-red{
    background-color: red;
}
.filter-green{
    background-color: green;
}
.filter-round{
    border-radius: 50%;
}
.filter-rectangle{
  width: 100px;
}
.filter-item.hidden{
    display: none;
}jQuery Code
$(document).on("click", ".js-filter", function(){
    var filters = [];
    $(this).toggleClass("checked");
    $(".js-filter.checked").each(function(){
        var filterValue = $(this).data("value"),
        filterGroup = $(this).data("type");
        if (!(filterGroup in filters)) {
            filters[filterGroup] = [];
        }
        filters[filterGroup].push(".filter-item.filter-" + filterValue);
    });
    // Build filter expression
    for (var i in filters) {
        filters[i] = filters[i].join(",");
    }
    $(".tutorial-filter-items .filter-item").addClass("hidden").filter(function () {
        var el = $(this),
        matches = true;
            for (var i in filters) {
                var filtersByGroup = filters[i];
                if (!el.is(filtersByGroup)) {
                matches = false;
                return false;
            }
        }
        return matches;
    }).removeClass("hidden");
});