在初始页面加载时显示过滤项目的数量 Mixitup
Show count of filtered Items on initial page load Mixitup
我正在使用 MixItUp 3 对项目进行排序和筛选,并希望在初始页面加载时显示每个筛选类别中的项目数。我已经尝试过 SO () 中的示例,但它的 MixItUp 2 在我的情况下不起作用。
我想在每个控件过滤器中显示过滤的项目数:
<div class="controls btn-toolbar d-flex justify-content-between mb-2" role="toolbar" aria-label="Toolbar with button groups">
<div class="btn-group" role="group" aria-label="First group">
<button type="button" data-mixitup-control class="control btn btn-secondary badge-pill" data-filter=".filter-1">Filter 1
<span class="badge badge-light ml-1" id="count1">{Show Items Count}</span>
</button>
<button type="button" data-mixitup-control class="control btn btn-secondary badge-pill" data-filter=".filter-2">Filter 2
<span class="badge badge-light ml-1" id="count2">{Show Items Count}</span>
</button>
</div>
</div>
它应该显示在此范围内(来自上面的示例):
<span class="badge badge-light ml-1">{Show Items Count}</span>
到目前为止,我的 MixItUp 混音器看起来像这样:
var mixer = mixitup(containerEl, {
animation: {
effects: 'fade translateZ(-100px) stagger(100ms)',
easing: 'cubic-bezier(0.645, 0.045, 0.355, 1)',
staggerSequence: function(i) {
return i % 3;
},
duration: 300,
applyPerspective: false
},
selectors: {
control: '[data-mixitup-control]'
}
});
从其他示例中我了解到我需要使用 state.totalShow
并且从 MixItUp 文档中我已经看到有 load
功能但是我没有找到满足我需求的解决方案。
我找到了一个解决方案,它可能不是以最高性能和最佳实践方式编写的,但它对我有用。
首先,我通过
获取调音台状态
var state = mixer.getState();
然后我遍历 state.targets 对象并在 ClassList.value 中搜索匹配的选择器并将它们相加。然后将相加的值解析为span元素,如下所示:
var count1 = 0;
var count2 = 0;
$.each( state.targets, function( index, value ) {
if (this.classList.value.match('filter-1')) {
count1 += this.classList.value.match('filter-1').length;
$('#count1').html(count1);
}
});
$.each( state.targets, function( index, value ) {
if (this.classList.value.match('filter-2')) {
count2 += this.classList.value.match('filter-2').length;
$('#count2').html(count2);
}
});
我想到了另一种解决方案,它非常简单但有效。我试图在页面加载时使用过滤器来计算数量或返回的结果。过滤器由 url 中的散列设置...在本例中为#sale 或#lease。我正在过滤 .sale 或 .lease 的页面加载,以便我能够使用 var showing = $('.sale').length 计算那些 类,然后将其用作我的计数。
我正在使用 MixItUp 3 对项目进行排序和筛选,并希望在初始页面加载时显示每个筛选类别中的项目数。我已经尝试过 SO (
我想在每个控件过滤器中显示过滤的项目数:
<div class="controls btn-toolbar d-flex justify-content-between mb-2" role="toolbar" aria-label="Toolbar with button groups">
<div class="btn-group" role="group" aria-label="First group">
<button type="button" data-mixitup-control class="control btn btn-secondary badge-pill" data-filter=".filter-1">Filter 1
<span class="badge badge-light ml-1" id="count1">{Show Items Count}</span>
</button>
<button type="button" data-mixitup-control class="control btn btn-secondary badge-pill" data-filter=".filter-2">Filter 2
<span class="badge badge-light ml-1" id="count2">{Show Items Count}</span>
</button>
</div>
</div>
它应该显示在此范围内(来自上面的示例):
<span class="badge badge-light ml-1">{Show Items Count}</span>
到目前为止,我的 MixItUp 混音器看起来像这样:
var mixer = mixitup(containerEl, {
animation: {
effects: 'fade translateZ(-100px) stagger(100ms)',
easing: 'cubic-bezier(0.645, 0.045, 0.355, 1)',
staggerSequence: function(i) {
return i % 3;
},
duration: 300,
applyPerspective: false
},
selectors: {
control: '[data-mixitup-control]'
}
});
从其他示例中我了解到我需要使用 state.totalShow
并且从 MixItUp 文档中我已经看到有 load
功能但是我没有找到满足我需求的解决方案。
我找到了一个解决方案,它可能不是以最高性能和最佳实践方式编写的,但它对我有用。
首先,我通过
获取调音台状态var state = mixer.getState();
然后我遍历 state.targets 对象并在 ClassList.value 中搜索匹配的选择器并将它们相加。然后将相加的值解析为span元素,如下所示:
var count1 = 0;
var count2 = 0;
$.each( state.targets, function( index, value ) {
if (this.classList.value.match('filter-1')) {
count1 += this.classList.value.match('filter-1').length;
$('#count1').html(count1);
}
});
$.each( state.targets, function( index, value ) {
if (this.classList.value.match('filter-2')) {
count2 += this.classList.value.match('filter-2').length;
$('#count2').html(count2);
}
});
我想到了另一种解决方案,它非常简单但有效。我试图在页面加载时使用过滤器来计算数量或返回的结果。过滤器由 url 中的散列设置...在本例中为#sale 或#lease。我正在过滤 .sale 或 .lease 的页面加载,以便我能够使用 var showing = $('.sale').length 计算那些 类,然后将其用作我的计数。