同时使用两个复选框和下拉菜单进行准确过滤 [英] Filter accurately with BOTH checkboxes AND dropdown menus at the same time
问题描述
我正在构建一个非常可排序/可过滤的图片库,其中包含很多标签.这个问题基于这个问题
var $filterCheckboxes = $('input[type="checkbox"]');var $filtermenues = $('.grid1');filterfuncAnother = 函数 () {var selectedFilters = [];$filtermenues.find(":selected").each(function () {调试器var v = this.value;if (selectedFilters.indexOf(v) === -1 && v)selectedFilters.push(v);});$('.animal' && '.filterDiv').隐藏().筛选(函数 (_, a) {var itemCat = $(a).data('category').split(' ');如果 (itemCat.indexOf("showAll") > -1)返回;返回 selectedFilters.every(功能(c){返回 itemCat.indexOf(c) >-1;})}).展示();}var filterFunc = 函数 () {var selectedFilters = [];调试器$filterCheckboxes.filter(':checked').each(function () {var v = this.value;if (selectedFilters.indexOf(v) === -1)selectedFilters.push(v);});$('.animal' && '.filterDiv').隐藏().筛选(函数 (_, a) {var itemCat = $(a).data('category').split(' ');返回 selectedFilters.every(功能(c){返回 itemCat.indexOf(c) >-1;})}).展示();}$filterCheckboxes.on('change', filterFunc);$('select').on('change', filterfuncAnother);
body {宽度:100%;文本对齐:居中;背景颜色:黑色;白颜色;字体系列:无衬线;}.网格 {宽度:300px;边距:50px 自动;显示:网格;网格模板列:1fr 1fr 1fr;}.grid1 {宽度:300px;边距:50px 自动;显示:网格;网格模板列:1fr 1fr 1fr;}.filterDiv {宽度:100px;高度:100px;填充顶部:20px;颜色:黑色;字体粗细:粗体;}
<!-- 基于这个 URL:https://stackoverflow.com/q/68315184/4383420 --><!-- 此 URL 中需要帮助:https://stackoverflow.com/q/68317206/4383420 --><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>调试游戏!<选择><option value="">--</option><option value="紫罗兰色">紫罗兰色</option></选择><选择><option value="">--</option><option value="blue">blue</option></选择><选择><option value="">--</option><option value="yellow">yellow</option></选择><div 类=网格><标签>紫罗兰色<input type="checkbox" value="紫罗兰色"/><span class="checkmark"></span>标签><标签>蓝色<input type="checkbox" value="blue"/><span class="checkmark"></span>标签><标签>黄色<input type="checkbox" value="yellow"/><span class="checkmark"></span>标签>
<div 类=网格><div class="filterDiv" data-category="violet blue" style="background-color: blue">标签:<br/>紫<br/>蓝</div><div class="filterDiv" data-category="violet red MVP" style="background-color: red">Tags: <br/>紫罗兰 <br/>red <br/>MVP
<div class="filterDiv" data-category="yellow" style="background-color: yellow">标签:<br/>yellow</div>
<div><label>最有价值球员 (MVP)<input type="checkbox" value="MVP"/><br/>(除了 MVP 之外的任何其他人都不应该一直被看到.<br/>但是如果不符合规则,也可以隐藏 MVP.)<span class="checkmark"></span>标签>
<div style="width:400px; text-align: left; margin: 60px auto;">规则:<p style="color:gray;">*刷新*</p><p>1.开启 MVP.从下拉菜单中选择蓝色 >全部都应该隐藏.</p><p style="color:gray;">*刷新*</p><p>2.从下拉菜单中选择黄色.开启 MVP >全部都应该隐藏.</p><p style="color:gray;">*刷新*</p><p>3.开启 MVP.从下拉菜单中选择黄色 >全部都应该隐藏.</p><p style="color:gray;">*刷新*</p><p>BONUS1:开启MVP.从下拉菜单中选择黄色.关闭 MVP >应该只看到黄色.</p><p style="color:gray;">*刷新*</p><p>BONUS2:从下拉菜单中选择黄色.检查黄色复选框.取消选中黄色复选框 >应该只看到黄色.</p><p>恭喜!</p>