やりたいこと
jQueryを使って、チェックボックスを使っての絞り込み表示を実装したいです。
例えばtype
のA
とcategory
のanimal
にチェックが入っていた時、どちらの条件も満たした配列としたいです。
またcategory
のanimal
とplant
など同一属性内で複数チェックがあった時、animal
あるいはplant
どちらかの条件を満たした配列としたいです。
現状type
での絞り込みまで完成しており、type
内で複数チェックがあった時の処理は未実装です。
HTML
1<div class="is-type"> 2 <h2>タイプでの絞り込み</h2> 3 <input type="checkbox" name="type" value="A"> A 4 <input type="checkbox" name="type" value="B"> B 5 <input type="checkbox" name="type" value="C"> C 6</div> 7 8<div class="is-type"> 9 <h2>カテゴリでの絞り込み</h2> 10 <input type="checkbox" name="category" value="animal"> animal 11 <input type="checkbox" name="category" value="plant"> plant 12</div> 13 14<ul class="is-list"></ul>
JavaScript
1// アイテムの情報 2const itemList = [ 3 { type: 'A', category: 'animal' }, 4 { type: 'B', category: 'plant' }, 5 { type: 'C', category: 'animal' } 6] 7 8// HTMLの生成 9const createItem = list => { 10 const listObject = $('.is-list'); 11 let listHTML = ''; 12 13 if (list.length > 0) { 14 $(list).each((index, item) => { 15 listHTML += `<li>` 16 listHTML += `<p>${ item.type }は${ item.category }です</p>` 17 listHTML += `</li>` 18 }); 19 } 20 21 listObject.html(listHTML); 22} 23 24// 絞り込み表示 25const filteredItem = () => { 26 let newItemList = []; 27 28 createItem(itemList); 29 30 $('.is-type input').on('change', () => { 31 const chekedItems = $('.is-type input:checked'); 32 33 newItemList = itemList.filter(item => item.type === chekedItems.val()); 34 createItem(newItemList); 35 }); 36}
困っていること
同一属性内で複数チェックがあった時にいずれかの条件を満たした配列を作るにはどうすればいいかわからず困っております。。
また現状ではtype
での絞り込みまでですが、ここからcategory
での絞り込みを追加した時にtype
とcategory
どちらの条件も満たした配列を作るにはどうしたらいいかわからない状況です。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー