我使用mixitup(带有multifilter插件)对项目进行排序/过滤,filter / sort控件是选择字段,通过更改触发插件。排序时,我将为使用的每个选择字段添加重置标记,这使用户可以重置单个过滤器(因此,无需全局重置)。
因此,当用户删除单个过滤器(徽章)时,我需要使用所选过滤器(减去我们已删除的过滤器)重新初始化插件。现在,当我单击徽章时,它将重置选择字段,但不会重新触发插件。
// markup //
// placeholder badges(auto generated)
<div class="badges-container">
// resets the main filter
<div class="badge" data-target="filter-main">remove main filter (x)</div>
// resets the sub filter
<div class="badge" data-target="filter-sub">remove sub filter (x)</div>
[...]
</div>
// filters
<div class="filters-container">
<select class="filter-main">
<option>filter 1</option>
<option>filter 2</option>
<option>filter 3</option>
</select>
<select class="filter-sub">
<option>filter 4</option>
<option>filter 5</option>
<option>filter 6</option>
</select>
[...]
</div>
// items container
<div class="items-container">
// items
</div>
// javascript logic //
//init plugin
var mixer = mixitup($('.container'), {
selectors: {
target : '.sort'
},
multifilter: {
enable : true,
parseOn : 'change'
}
});
// reset filters with click on badge
$('body').on('click', '.badge', function(e) {
e.preventDefault();
var tar = $(this).attr('data-target');
// reset the select field
$('.'+target).val("").change();
$(this).remove();
mixer.init()// the idea
});