我必须为产品列表构建一个复杂的过滤系统。下面是产品列表的基本结构:
<ul id="prod-list">
<li class="item type-brochure lang-english">Brochure: English</li>
<li class="item type-folder lang-english lang-french">Folder: English, French</li>
<li class="item type-bulletin lang-english">Bulletin: English</li>
<li class="item type-folder lang-english lang-french">Folder: English, French</li>
<li class="item type-folder lang-english">folder: English</li>
<li class="item type-brochure lang-english lang-spanish">Brochure: English, Spanish</li>
<li class="item type-brochure lang-english">Brochure: English</li>
<li class="item type-folder lang-english">Folder: English</li>
<li class="item type-bulletin lang-english">Bulletin: English</li>
</ul>
然后,我为每种类型和语言过滤器设置了复选框:
<p><strong>Filter by Type:</strong></p>
<p><input type="checkbox" id="type-brochure" /> <label for="type-brochure">Brochure</label></p>
<p><input type="checkbox" id="type-folder" /> <label for="type-folder">Folder</label></p>
<p><input type="checkbox" id="type-bulletin" /> <label for="type-bulletin">Bulletin</label></p>
...
<p><strong>Filter by Language:</strong></p>
<p><input type="checkbox" id="lang-english" /> <label for="lang-english">English</label></p>
<p><input type="checkbox" id="lang-spanish" /> <label for="lang-spanish">Spanish</label></p>
<p><input type="checkbox" id="lang-french" /> <label for="lang-french">French</label></p>
...
如您所见,每个项目都有一个类型,然后是一种语言。一个项目可以有多种类型和语言。
基本上,我需要类型的复选框作为OR语句(如果用户选中 Brochure 和 Folder 的复选框,它将列出所有 Brochures和文件夹,然后隐藏所有其他)。
然后,我需要语言的复选框充当AND语句(如果用户选中英语和法语的复选框,它只会显示同时是英语和法语的项目,然后隐藏所有其他项目)。
我查看了其他问题,例如this,但我不确定如何让类似的东西与两种不同的过滤方法一起使用。过滤器需要协同工作,这样如果用户检查小册子、英语、法语,它只会显示同时是英语和法语的小册子。
如果有人对如何实现这一点有一些建议,将不胜感激。
谢谢