it_proger29
@it_proger29
Битрикс

Как сделать так чтобы jquery фильтр искал по нескольким значениям?

Здравствуйте, есть фильтр. Фильтрует по атрибуту.
Как сделать так чтобы он искал по нескольким значениям сразу?

// сбросить все фильтры
    $('.button-resourse_reset').click(function() {
        $('.item_block_filter').show();
        $('.price_min,.price_max,.max_data,.min_data').val('');
    });
    // Города
    $('.city_filter a').click(function() {
        $('.city_filter li').removeClass('selected');
        $(this).parent('.city_filter li').addClass('selected');
        thisItem 	= $(this).attr('data-city');
        if(thisItem != "all") {
            $('.item_block_filter[data-city='+thisItem+']').show();
            $('.item_block_filter[data-city!='+thisItem+']').hide();
        }
    });
    // Тип
    $('.type_filter a').click(function() {
        $('.type_filter li').removeClass('selected');
        $(this).parent('.type_filter li').addClass('selected');
        thisItem 	= $(this).attr('data-type');
        if(thisItem != "all") {
            $('.item_block_filter[data-type='+thisItem+']').show();
            $('.item_block_filter[data-type!='+thisItem+']').hide();
        }
    });
    // Сегодня
    $('li a[data-today="Сегодня"]').click(function() {
        thisItem 	= $(this).attr('data-today');
        if(thisItem != "all") {
            $('.item_block_filter').hide();
            $('.item_block_filter[data-today="Сегодня"]').show();
        }
    });
    // Завтра
    $('li a[data-tomorrow="Завтра"]').click(function() {
        thisItem 	= $(this).attr('data-tomorrow');
        if(thisItem != "all") {
            $('.item_block_filter').hide();
            $('.item_block_filter[data-tomorrow="Завтра"]').show();
        }
    });
    // На неделе
    $('li a[data-a_week="НаНеделе"]').click(function() {
        thisItem 	= $(this).attr('data-a_week');
        if(thisItem != "all") {
            $('.item_block_filter').hide();
            $('.item_block_filter[data-a_week="НаНеделе"]').show();
        }
    });
    // На выходные
    $('li a[data-weekends="Выходные"]').click(function() {
        thisItem 	= $(this).attr('data-weekends');
        if(thisItem != "all") {
            $('.item_block_filter').hide();
            $('.item_block_filter[data-weekends="Выходные"]').show();
        }
    });
    //  цена
    $('.price_min,.price_max').on('input',function() {
        const
            min = $('.price_min').val(),
            max = $('.price_max').val();

        $('.item_block_filter').each(function() {
            const price = +this.dataset.price;
            $(this).toggle((!min || min <= price) && (!max || price <= max));
        });
    });
    //  дата
    $('.data_btn_go').on('click',function() {
        const
        min_data1 = $('.min_data').val(),
        max_data1 = $('.max_data').val();
        min_data = min_data1.replace(new RegExp('-', 'g'),"");
        max_data = max_data1.replace(new RegExp('-', 'g'),"");
        $('.item_block_filter').each(function() {
            const price2 = +this.dataset.datatime_minus;
            $(this).toggle((!min_data || min_data <= price2) && (!max_data || price2 <= max_data));
        });
    });
  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Делаете общую функцию фильтрации, где получаете данные из всех фильтров и сравниваете их с элементами. Подключаете эту функцию ко всем фильтрам в качестве обработчика событий, возникающих при взаимодействии с ними пользователя. Например.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы