![](/img/trans.png)
[英]How can I get a search filter to loop through MULTIPLE data types in a stock items table, and narrow down what results displayed?
[英]How to narrow search results in a multiple checkbox filter?
这是我上一个问题的后续: 多复选框过滤器:如何同时获得加法和减法效果
非常感谢在我之前的问题中帮助过我的所有人。 基本上,我想根据它们拥有的类来创建隐藏和显示 div 项目的复选框。 过滤器分为两类,每个类别中有两个选项: citiesFilter (hamiltonFilter + torontoFilter) 和costFilter (cheapEatsFilter + costFilter)。
<div>
元素的数量(即单击“hamiltonFilter”和“torontoFilter”应该显示具有任一类的<div>
元素)<div>
元素的数量(即单击“hamiltonFilter”和“cheapEatsFilter”应仅显示具有两个类的<div>
元素) 以前的答案有效,但仅限于每个类别; 当我单击 'hamiltonFilter' 和 'cheapEatsFilter' 时,它不会缩小结果范围,而是向我显示具有任一类的所有<div>
元素。 我尝试修改他们的代码,但无法弄清楚如何使用这两个类选择<div>
元素。
https://jsfiddle.net/de1zc7vx/1/
编辑:放入错误的 jfiddle
$(document).ready(function() {
$('#checkboxFilterContainer').find('input:checkbox').on("change", function() {
var $citiesIDs, $costIDs = [];
var $citiesCategory = $('#citiesFilterContainer').find('input:checked');
var $costCategory = $('#costFilterContainer').find('input:checked');
$citiesCategory.each(function(index, element) {
$citiesIDs.push(element.getAttribute('id'));
});
$costCategory.each(function(index, element) {
$costIDs.push(element.getAttribute('id'));
});
var $totalLength = ($citiesIDs.length + $costIDs.length);
if ($totalLength == 0) {
$('.blogpost').removeClass('hide');
} else {
$('.blogpost').addClass('hide');
for(i = 0; i < $totalLength; i++) {
var x = $citiesIDs[i];
var y = $costIDs[i];
var xClass = $('.' + x);
var yClass = $('.' + y);
$('.x.y').removeClass('hide');
}
}
})
})
var $filteredPosts = $('.blogpost').addClass('hide'); if ($totalLength) { var citiesOrSelector = '.'+ $citiesIDs.join(',.'); var costsOrSelector = '.'+ $costIDs.join(',.'); if ($citiesIDs.length) $filteredPosts = $filteredPosts.filter(citiesOrSelector); if ($costIDs.length) $filteredPosts = $filteredPosts.filter(costsOrSelector); } $filteredPosts.removeClass('hide');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.