Как модернизировать данный фильтр javascript?

184
07 января 2022, 03:40

Добрый день есть такой код фильтра

$(document).ready(function () {
  var eqEtage;
  var eqPrice;
  var eqSquare;
  $('.filter-item__buttons .button').on('click', function (event) {
    event.preventDefault();
    $('.filter-item__buttons .button').removeClass('active');
    $(this).addClass('active');
  });
  $('#filter-aply').on('click', function () {
    var etage = $('.filter-item__buttons').children('.button.active').data('etg');
    etage = parseFloat(etage); // Squareя
    var squareMin = $("#js-range__metr").data('from');
    squareMin = parseFloat(squareMin);
    var squareMax = $("#js-range__metr").data('to');
    squareMax = parseFloat(squareMax); // Price
    var priceMin = $("#js-range__price").data('from');
    priceMin = parseFloat(priceMin);
    var priceMax = $("#js-range__price").data('to');
    priceMax = parseFloat(priceMax);
    var dataCount = 0;
    var saleItems = $('.sale-item');
    for (var i = 0; i < saleItems.length; i++) {
      var item = saleItems[i];
      var etageLocal = $(item).data('etage');
      etageLocal = parseFloat(etageLocal);
      var price = $(item).data('price');
      price = parseFloat(price);
      var square = $(item).data('square');
      square = parseFloat(square);
      eqPrice = price <= priceMax && price >= priceMin;
      eqEtage = etageLocal == etage;
      eqSquare = square <= squareMax && square >= squareMin;
      if (eqEtage == false || eqPrice == false || eqSquare == false) {
        $(item).removeClass('showed');
        $(item).removeAttr('data-count');
      }
      if (eqPrice == true && eqEtage == true && eqSquare == true) {
        $(item).addClass('showed');
        dataCount++;
        $(item).attr('data-count', dataCount);
        $('.sale-item__eye').attr('data-position', dataCount);
        // $('.sale-item[data-count="1"]').click();
      }
    }
  });
});

Данный скрипт отвечает за смену класса на кнопке

$('.filter-item__buttons .button').on('click', function (event) {
    event.preventDefault();
    $('.filter-item__buttons .button').removeClass('active');
    $(this).addClass('active');
  });

И как можно видеть лишь одна кнопка будет иметь активный класс Но изменилось задача и теперь можно выбирать обе кнопки

$('.filter-item__buttons .button').on('click', function (event) {
    $(this).toggleClass('active');
  });

Так вот вопрос, как модернизировать код фильтра ( при клике ) , что бы если длина кнопок == 1 ( т.е выбрана одна кнопка ) выполняется скрипт что ниже А если длина больше 1 ( выбраны 2 кнопки) то eqEtage автоматом идет true ведь в любом случае выполняется Заранее спасибо

READ ALSO
Вопрос по методу filter() в JavaScript

Вопрос по методу filter() в JavaScript

Из массива чекбоксов нужно получить лишь те, у которых атрибут 'data-set-chld' равен атрибуту 'data-set-parent' того, на который кликнули

176
Подставить значение JS к URL

Подставить значение JS к URL

Есть следующий код:

193
Как понять, что присылает подписка Xsi-events АТС Билайн на указанный для нее URL?

Как понять, что присылает подписка Xsi-events АТС Билайн на указанный для нее URL?

Оформлена подписка Xsi-event через PUT запрос в API АТС БилайнВ параметре URL был указан адрес, который принимает POST запросы

228
HTML JS Как задать изначальные значения в indexeddb

HTML JS Как задать изначальные значения в indexeddb

Имеется база данных indexeddb внутри браузераКак задать ей изначальные значения? Например пользователь заходит в первый раз, значения по умолчанию...

276