Javascript 可以;。“过滤器”;检查目标是否具有多个属性?

Javascript 可以;。“过滤器”;检查目标是否具有多个属性?,javascript,jquery,html,css,filter,Javascript,Jquery,Html,Css,Filter,我设置了一个复选框过滤器,我正在使用.filter来过滤一些div 以下是我的Jquery: $(document).ready(function(){ var checkboxes = $('div.filter-groups').find('input:checkbox'), general = $('.general'); function filterCheckboxes(){ var checked = checkboxes.filter(':checked');

我设置了一个复选框过滤器,我正在使用.filter来过滤一些div

以下是我的Jquery:

$(document).ready(function(){
var checkboxes = $('div.filter-groups').find('input:checkbox'),
general = $('.general');

function filterCheckboxes(){
    var checked = checkboxes.filter(':checked');

    general.hide();
    $.each(checked, function(){
    var rel = $(this).data('filter');

        general.filter('.' + rel).show();
    });
}

checkboxes.on('click', filterCheckboxes);
}); 
以下是网页:

以下是JSFIDLE:

我需要
.filter
在显示之前检查div是否具有所有复选框属性。有什么建议吗

第二,为什么当我选中并取消选中一个或多个复选框时,所有div都不再出现?这可以解决吗?

您有两个问题:

  • 你隐藏了所有的div,但从不显示它
  • 在每个:选中的输入处隐藏,因此只考虑一个过滤器
从您的JSFIDLE:

$(文档).ready(函数(){
$('div.filter-groups')。查找('input:checkbox')。打开('click',函数(){
$('.general').hide();
变量选择器=[];
var filters=$('div.filter-groups').find('input:checked');
过滤器。每个(函数(){
选择器.push('div.general.+$(this.attr('rel'));
});
如果(filters.length==0)
$('.general').show();
否则{
变量选择器=选择器。联接(“,”);
$(选择器).show();
}
});
});

我没有完全测试这段代码。
希望有帮助。

这里的快速阅读让我了解到,
过滤器
支持函数或回调。仅供参考,您的JSFIDLE与您在问题中发布的代码不匹配。是的,但我已经知道了。在指定隐藏或显示之前,您会使用什么样的函数将div的类项与多个复选框的数据进行比较?rogMaHall抱歉,我修复了链接。
div在显示之前所有复选框属性的含义是什么?甚至不清楚预期的行为是什么,或者您正在谈论的
属性是什么