###前提・実現したいこと
jsで2軸のフィルター機能を作りたいです。
下記のところまで実装して1軸に対してのフィルターは出来たのですが、この先どうすれば良いかわからず。。。
やりたいこととして2つのフィルター(カテゴリー1とカテゴリー2)で掛け合わせてA and Bのソートがしたいです。
最終的には、#sel1でtest2を選択をした場合はtest2に当てはまるもののみ.portfolio-itemの単位表示し、その上で#sel2でtest4を選択した場合はtest2かつtest4に当てはまるものを.portfolio-itemの単位で表示したいです。
例えば、#sel1のvalueが2の時に、span.categoryの1つめのクラスに2を含むものを(この場合は <option id="2" value="2">test2</option>)を.portfolio-item単位で表示する。#sel1のvalueが2、かつ#sel2のvalueが4の時は、span.categoryの1つめのクラスに2と2つめのクラスに4を含むもの(この場合は <span class="category 4 2">test4</span>)を.portfolio-item単位で表示したい。
###該当のソースコード
セレクトボタン
html
1<div class="form-group"> 2<div> 3 <label for="sel1">カテゴリー1</label> 4 <select class="form-control" id="sel1"> 5 <option id="2" value="2">test2</option> 6 <option id="3" value="3">test3</option> 7</select> 8</div> 9<div> 10 <label for="sel1">カテゴリー2</label> 11 <select class="form-control" id="sel2"> 12 <option id="1" value="1">test</option> 13 <option id="4" value="4">test4</option> 14</select> 15</div> 16</div>
フィルターしたいコンテンツ
html
1<div class="list-group"> 2 <div class="portfolio-item"> 3 <span class="category 2 1">test2</span> 4 <span class="category 3 1">test3</span> 5 <p>test</p> 6 </div> 7 <div class="portfolio-item"> 8 <span class="category 1 2">test1</span> 9 <span class="category 4 2">test4</span> 10 <p>test2</p> 11 </div> 12 </div>
.categoryクラスにの2つめに付いているクラスがフィルターの番号です。
.categoryクラスにの1つめに付いているクラスがフィルター内の値(option id)です。
js
1$("#sel1").change(function(){ 2 var val = $(this).val(); 3 $('.category').each(function(){ 4 var category_val = $(this).attr('class').split(" ")[1]; 5 if(val == category_val){ 6 $(this).parents('.portfolio-item').hide(); 7 }else{ 8 $(this).parents('.portfolio-item').show(); 9 } 10 }); 11 }); 12$("#sel2").change(function(){ 13 var val = $(this).val(); 14 $('.category').each(function(){ 15 var category_val = $(this).attr('class').split(" ")[1]; 16 if(val == category_val){ 17 $(this).parents('.portfolio-item').hide(); 18 }else{ 19 $(this).parents('.portfolio-item').show(); 20 } 21 }); 22 });
###追記
やりたいこととしては以下のサイトのように業種×⚪️⚪️のように2つのフィルターで両方に当てはまるものを表示させたいというイメージです。。。
https://www.cloudpayment.co.jp/service/payment/case/