问题描述
多个过滤器正在工作。我在添加搜索以使用多个过滤器时遇到问题。
我有搜索表单和多个下拉菜单。这是 2 个下拉菜单的形式和示例。
HTML
<input type="text" id="quicksearch" placeholder="Search">
<form action="#">
<div class="row dropdowns">
<p class="filter-by">Filter By</p>
<select name="season" id="filter-season">
<option value="*">All Seasons</option>
<option value=".spring">Spring</option><option value=".summer">Summer</option>
</select>
<i class="fas fa-plus"></i>
<select name="season" id="filter-age">
<option value="*">All Ages</option>
<option value=".early-years">Early Years</option>
<option value=".children-youth">Children & Youth</option>
<option value=".adults-seniors">Adults & Seniors</option>
</select>
</div>...
</form>
一个程序的示例 - 该程序将携带一堆类名,因此基于类名过滤掉的函数正在工作。我似乎无法获得与搜索和查找匹配文本相关的功能
<li class="carousel-cell program day-mon early-years spring group is-filtered is-selected">
<h3 class="frontpage-card-title">Active Kids: Multi-Sport and ...</h3>
<span class="program-number">Ages 1 - 3 </span>
</li>
用于初始化同位素的jQuery代码
<?PHP /**************************** Filtering Programs ************************************/ ?>
// This is here to allow us to use Isotope without Layoutmode - Do not delete
Isotope.Item.prototype._create = function() {
// assign id,used for original-order sorting
this.id = this.layout.itemGUID++;
// transition objects
this._transn = {
ingProperties: {},clean: {},onEnd: {}
};
this.sortData = {};
};
Isotope.Item.prototype.layoutPosition = function() {
this.emitEvent( 'layout',[ this ] );
};
Isotope.prototype.arrange = function( opts ) {
// set any options pass
this.option( opts );
this._getIsInstant();
// just filter
this.filteredItems = this._filter( this.items );
// flag for initalized
this._isLayoutinited = true;
};
// layout mode that does not position items
Isotope.LayoutMode.create('none');
// --------------- //
var filters = [],inclusives = [],inclusivesstring = "",filterValue = "",filterValueWithInclusivesArray = [],filterValueWithInclusives = "",$filterSeason = $('#filter-season'),$filterage = $('#filter-age'),$noprograms = $('.no-programs');
// quick search regex
var qsRegex;
// init Isotope
$noprograms.hide();
var $grid = $('.filtered-programs-container').isotope({
itemSelector: '.program',layoutMode: 'none',transitionDuration: 0,filter: function() {
var $this = $(this);
var searchResult = qsRegex ? $this.text().match( qsRegex ) : true;
return searchResult;
},});
// use value of search field to filter
var $quicksearch = $('.quicksearch').keyup( debounce( function() {
qsRegex = new RegExp( $quicksearch.val(),'gi' );
$grid.isotope();
}) );
// debounce so filtering doesn't happen every millisecond
function debounce( fn,threshold ) {
var timeout;
threshold = threshold || 100;
return function debounced() {
clearTimeout( timeout );
var args = arguments;
var _this = this;
function delayed() {
fn.apply( _this,args );
}
timeout = setTimeout( delayed,threshold );
};
}
$grid.on( 'layoutComplete',function( event,laidOutItems ) {
if (laidOutItems.length <= 0 ) {
$noprograms.show();
$('.filtered-programs-container').hide();
} else {
$noprograms.hide();
$('.filtered-programs-container').show();
}
}
);
// bind Filter on season change
$filterSeason.on( 'change',function () {
getFilters($grid);
});
// Filter Age Range
$filterage.on( 'change',function() {
getFilters($grid);
});
function getFilters($grid) {
// display/Reset all hidden list items
$('.filtered-programs-container li.is-filtered').show();
// Reset Filters + Inclusives
filters.splice(0,filters.length);
inclusives.splice(0,inclusives.length);
inclusivesstring = "";
filterValue = "";
filterValueWithInclusivesArray.splice(0,filterValueWithInclusivesArray.length);
filterValueWithInclusives = "";
var seasonValue = $filterSeason.val(),ageValue = $filterage.val(),// Season Filter
if (seasonValue != "*" ) {
filters.push(seasonValue);
}
// Age Filter
if (ageValue != "*" ) {
filters.push(ageValue);
}
// Grab Inclusive Filters (activity / season / etc)
filterValue = filters.length ? filters.join('') : '*';
$grid.isotope({ filter: filterValueWithInclusives });
$('.program').removeClass('is-filtered');
$('.program:visible').addClass('is-filtered');
$('.number-results').remove();
var numItems = $('.is-filtered').length/2;
if ( numItems != 0) {
$('.filtered-programs-container').append('<div class="number-results"><p>' + numItems + ' Results</p></div>');
}
// Hide list items to reset infinite scrolling
$('.filtered-programs-list-container li.is-filtered').slice(5).hide();
maxcount = 6;
//here
var isFlickity = true;
if ( isFlickity ) {
$carousel.flickity('destroy')
$('.main-carousel').flickity({
cellSelector: '.carousel-cell.is-filtered',cellAlign: 'left',contain: true,imagesLoaded: true,draggable: '>4',wrapAround: false,pageDots: false,percentPosition: true,resize: true
});
}
isFlickity = !isFlickity;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)