【发布时间】:2017-08-30 08:49:20
【问题描述】:
HTML
<ul>
<li data-filters={["red","green","blue"]}>x</li>
<li data-filters={["red","green","yellow"]}>x</li>
<li data-filters={["white","green","gray"]}>x</li>
</ul>
JQUERY
var searchIDs = []; // array used to filter
$( ".filter_check input:checkbox:checked" ).map(function(){
searchIDs.push($(this).val());
});
我应该隐藏所有没有用复选框选中的值的
更新
这可行,但只选择一个复选框。我需要选择多个复选框
$('#container li').each(function(){
if (!$(this).data('filters').includes(searchIDs)) {
$(this).hide();
} else {
$(this).show();
}
})
更新
var searchIDs = [];
function togRow(searchIDs) {
$('#container_box_result li').each(function(){
$(this).toggle(
searchIDs.every(function (id) {
return $(this).data('filters').includes(id)
}, this)
);
})
}
$(document).on('change', '.filter_check input',function(event){
event.preventDefault();
searchIDs = [];
$( ".filter_check input:checkbox:checked" ).map(function(){
searchIDs.push($(this).val());
});
console.log(searchIDs);
togRow($(this).val().split(/\s*,\s*/));
});
【问题讨论】:
-
为您的代码添加 jsfiddle 或 sn-p
标签: jquery arrays checkbox filter