Несколько параметров фильтра, флажок, переключатели. jQuery - PullRequest
0 голосов
/ 30 марта 2020

У меня проблема с опцией фильтра, что я сделал. Сначала я объясню параметры фильтра

Параметры фильтра: - Купить или Арендовать (переключатель) - Сортировать по цене (минимум - максимум, максимум - минимум) (переключатель) - Класс продукта (кнопка-флажок) - Марка (кнопка-флажок)

Циклы продукта выглядят следующим образом:

<div class="col-12 col-sm-6 PRODUCT-item" id="<?php echo $post->ID;?>" data-BRAND="<?php echo $BRAND[0]->slug;?>" data-CLASS="<?php the_field('CLASS');?>">
    <div class="PRODUCTcard">
        <a href="<?php the_permalink();?>" title="<?php the_title();?>">
            <img src="<?php echo $featured_img_url;?>" class="card-img-top" alt="<?php the_title();?>">
        </a>
        <div class="PRODUCTcard-body">
            <h3 class="card-title blauw bold">
                <a href="<?php the_permalink();?>" title="<?php the_title();?>"><?php the_title();?></a>
            </h3>

            <?php echo 'Vanaf '. formatPrijs($defprijs_met_abo,true);?>

            <p class="PRODUCTcard-text"><?php the_field('samenvatting');?></p>

            <div class="text-center">
                <a href="<?php the_permalink();?>" title="<?php the_title();?>" class="btn btn-blauw d-block bold">Bekijk deze PRODUCT</a>
            </div>
        </div>
    </div>
</div>

Итак, это продукт l oop, следующим шагом будет выбор параметров фильтра:

<div class="col-12 col-sm-4 position-sticky" id="filteropties">
    <div class="row">
        <div class="col-12">
            <div id="toggle-filter">
                <a href="#" title="Filter / sorteren" class="filter-title upcase blauw bold">Filter / sorteer op <i class="fas fa-chevron-up"></i></a>
            </div>
        </div>
        <div class="col-6 overzicht-filter">
            <fieldset class="form-group">
                <div class="row">
                    <legend class="col-form-label pt-0 bold">Buy or rent</legend>

                    <div class="col-sm-12">
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="i-buyorrent" id="buy" value="buy"
                                   checked="checked">
                            <label class="form-check-label" for="buy">
                                Buy
                            </label>
                            <span class="radiomark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="i-buyorrent" id="rent" value="rent">
                            <label class="form-check-label" for="rent">
                                Rent
                            </label>
                            <span class="radiomark"></span>
                        </div>
                    </div>
                </div>
            </fieldset>
        </div>
        <div class="col-6 overzicht-filter">

            <fieldset class="form-group">
                <div class="row">
                    <legend class="col-form-label pt-0 bold">Sorteren op prijs</legend>
                    <div class="col-sm-12">
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="i-sorteren" id="laagnaarhoog"
                                   value="laagnaarhoog" checked="checked">
                            <label class="form-check-label" for="laagnaarhoog">
                                Laag naar hoog
                            </label>
                            <span class="radiomark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="radio" name="i-sorteren" id="hoognaarlaag"
                                   value="hoognaarlaag">
                            <label class="form-check-label" for="hoognaarlaag">
                                Hoog naar laag
                            </label>
                            <span class="radiomark"></span>
                        </div>
                    </div>
                </div>
            </fieldset>
        </div>
    </div>

    <div class="row">
        <div class="col-6 overzicht-filter">
            <fieldset class="form-group">
                <div class="row">
                    <legend class="col-form-label pt-0 bold">BRANDS</legend>
                    <div class="col-sm-12">
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-BRANDS" id="Brand-1" data-filter="BRAND"
                                   data-BRAND="Brand-1" value="Brand-1">
                            <label class="form-check-label" for="Brand-1">
                                Brand-1 </label>
                            <span class="checkmark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-BRANDS" id="Brand-2"
                                   data-filter="BRAND" data-BRAND="Brand-2" value="Brand-2">
                            <label class="form-check-label" for="Brand-2">
                                Brand-2 </label>
                            <span class="checkmark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-BRANDS" id="Brand-3"
                                   data-filter="BRAND" data-BRAND="Brand-3" value="Brand-3">
                            <label class="form-check-label" for="Brand-3">
                                Brand-3 </label>
                            <span class="checkmark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-BRANDS" id="Brand-4"
                                   data-filter="BRAND" data-BRAND="Brand-4" value="Brand-4">
                            <label class="form-check-label" for="Brand-4">
                                Brand-4 </label>
                            <span class="checkmark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-BRANDS" id="Brand-5"
                                   data-filter="BRAND" data-BRAND="Brand-5" value="Brand-5">
                            <label class="form-check-label" for="Brand-5">
                                Brand-5 </label>
                            <span class="checkmark"></span>
                        </div>
                    </div>
                </div>
            </fieldset>
        </div>
        <div class="col-6 overzicht-filter">
            <fieldset class="form-group">
                <div class="row">
                    <legend class="col-form-label pt-0 bold">CLASS Klasse</legend>
                    <div class="col-sm-12">
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-CLASSklasse" id="CLASS 3"
                                   data-filter="klasse" data-klasse="3" value="3">
                            <label class="form-check-label" for="CLASS 3">
                                CLASS 3 </label>
                            <span class="checkmark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-CLASSklasse" id="CLASS 4"
                                   data-filter="klasse" data-klasse="4" value="4">
                            <label class="form-check-label" for="CLASS 4">
                                CLASS 4 </label>
                            <span class="checkmark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-CLASSklasse" id="CLASS 5"
                                   data-filter="klasse" data-klasse="5" value="5">
                            <label class="form-check-label" for="CLASS 5">
                                CLASS 5 </label>
                            <span class="checkmark"></span>
                        </div>
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" name="i-CLASSklasse" id="CLASS 6"
                                   data-filter="klasse" data-klasse="6" value="6">
                            <label class="form-check-label" for="CLASS 6">
                                CLASS 6 </label>
                            <span class="checkmark"></span>
                        </div>
                    </div>
                </div>
            </fieldset>
        </div>
    </div>

</div>

Мой jQuery скрипт для дальнего:

    jQuery('.filteropties input[type="checkbox"]').on('change', function() {
        var filteron = $(this).data('filter');
        $('#filteropties [data-filter="'+filteron+'"]:not(:checked)').each(function(){
            var unchecked = $(this).data(filteron);
            $('.PRODUCT-item[data-'+filteron+'="'+unchecked+'"]').hide();
        });
        $('#filteropties [data-filter="'+filteron+'"]:checked').each(function(){
            var unchecked = $(this).data(filteron);
            $('.PRODUCT-item[data-'+filteron+'="'+unchecked+'"]').show();
        });

Это еще не завершено, потому что я нашел проблему. Если вы фильтруете только по БРЕНДУ, это прекрасно работает, но если вы выбираете 2 БРЕНДА и после этого выбираете КЛАСС из флажка, то выбор брендов больше не имеет значения, и он фильтрует только по КЛАССАМ. Надеюсь, вы понимаете, о чем я, может кто-то помоги мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...