【javascript】要素を絞り込み表示したい【css】
公開日:2021年11月12日
要素を絞り込んで表示したい
例えばレクサスのwebサイトは、車両タイプ別に表示を絞り込んでいる。
https://lexus.jp/models/
こんな感じで、リスト表示をクリックで絞り込みたい。そんな時の備忘録。
javascriptを使って表示を切り分ける
こちらのサイトが参考になった。
jQueryでリスト表示を絞り込む処理を実装する | Tips Note by TAM
https://www.tam-tam.co.jp/tipsnote/javascript/post14636.html
html側にはそれぞれの要素にdata-groupでグループ分けをする。
そして、css側で表示・非表示のクラス名とdisplayでnoneとそうでないものを振り分ける。
で、javascriptで下記のように記述。
var searchItem = '.search_item'; // 絞り込む項目を選択するエリア var listItem = '.list_item'; // 絞り込み対象のアイテム var hideClass = 'is-hide'; // 絞り込み対象外の場合に付与されるclass名 var activeClass = 'is-active'; // 選択中のグループに付与されるclass名 $(function() { // 絞り込みを変更した時 $(searchItem).on('click', function() { $(searchItem).removeClass(activeClass); var group = $(this).addClass(activeClass).data('group'); search_filter(group); }); }); /** * リストの絞り込みを行う * @param {String} group data属性の値 */ function search_filter(group) { // 非表示状態を解除 $(listItem).removeClass(hideClass); // 値が空の場合はすべて表示 if(group === '') { return; } // リスト内の各アイテムをチェック for (var i = 0; i < $(listItem).length; i++) { // アイテムに設定している項目を取得 var itemData = $(listItem).eq(i).data('group'); // 絞り込み対象かどうかを調べる if(itemData !== group) { $(listItem).eq(i).addClass(hideClass); } } }
これでlexusの車両モデルページ風な動きが可能になった。