\r\n
\r\n Show All\r\n Show Green Boxes\r\n Show Blue Boxes\r\n Show Red Boxes\r\n
\r\n\r\n
\r\n Box1 r\r\n Box2 g\r\n Box3 b\r\n Box4 g\r\n Box5 r\r\n Box6 g\r\n Box7 b\r\n Box8 r\r\n Box9 g\r\n Box10 b\r\n Box11 r\r\n Box12 g\r\n Box13 b\r\n Box14 g\r\n Box15 r\r\n Box16 b\r\n
\r\n\r\n```","dateModified":"2019-09-18T10:23:26.078Z","datePublished":"2019-09-18T10:23:26.078Z","upvoteCount":1,"url":"https://teratail.com/questions/212565#reply-312987"},"suggestedAnswer":[],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/jQuery","name":"jQueryに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/212565","name":"プルダウンでコンテンツを絞り込みたい"}}]}}}
質問するログイン新規登録

Q&A

解決済

1回答

594閲覧

プルダウンでコンテンツを絞り込みたい

yyyddd

総合スコア5

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/09/18 09:30

0

0

前提・実現したいこと

プルダウンで選択した要素で絞り込んで表示させたいです。
プルダウン仕様では無い、絞り込みのサンプルコードをカスタマイズしてプルダウンで使用できるようにしたいです。

該当のソースコード

【html】 <header> <h2>Sequential filtering component with CSS & jQuery</h2> </header> <div class="cta filter"> <a class="all active" data-filter="all" href="#" role="button">Show All</a> <a class="green" data-filter="green" href="#" role="button">Show Green Boxes</a> <a class="blue" data-filter="blue" href="#" role="button">Show Blue Boxes</a> <a class="red" data-filter="red" href="#" role="button">Show Red Boxes</a> </div> <div class="boxes"> <a class="red" data-category="red" href="#">Box1</a> <a class="green" data-category="green" href="#">Box2</a> <a class="blue" data-category="blue" href="#">Box3</a> <a class="green" data-category="green" href="#">Box4</a> <a class="red" data-category="red" href="#">Box5</a> <a class="green" data-category="green" href="#">Box6</a> <a class="blue" data-category="blue" href="#">Box7</a> <a class="red" data-category="red" href="#">Box8</a> <a class="green" data-category="green" href="#">Box9</a> <a class="blue" data-category="blue" href="#">Box10</a> <a class="red" data-category="red" href="#">Box11</a> <a class="green" data-category="green" href="#">Box12</a> <a class="blue" data-category="blue" href="#">Box13</a> <a class="green" data-category="green" href="#">Box14</a> <a class="red" data-category="red" href="#">Box15</a> <a class="blue" data-category="blue" href="#">Box16</a> </div> 【css】 * { margin: 0; padding: 0; box-sizing: border-box; } html { font: 18px/1.65 sans-serif; text-align: center; } li { list-style-type: none; } a { text-decoration: none; display: block; color: #333; } h2 { color: #333; padding: 10px 0; } .filter { margin: 30px 0 10px; } .filter a { display: inline-block; padding: 10px; border: 2px solid #333; position: relative; margin-right: 20px; margin-bottom: 20px; } .boxes { display: flex; flex-wrap: wrap; } .boxes a { width: 23%; border: 2px solid #333; margin: 0 1% 20px 1%; line-height: 60px; } .all { background: khaki; } .green { background: lightgreen; } .blue { background: lightblue; } .red { background: lightcoral; } .filter a.active:before { content: ''; position: absolute; left: 0; top: 0; display: inline-block; width: 0; height: 0; border-style: solid; border-width: 15px 15px 0 0; border-color: #333 transparent transparent transparent; } .is-animated { animation: .6s zoom-in; } @keyframes zoom-in { 0% { transform: scale(.1); } 100% { transform: none; } } 【js】 (function($) { 'use strict'; var $filters = $('.filter [data-filter]'), $boxes = $('.boxes [data-category]'); $filters.on('click', function(e) { e.preventDefault(); var $this = $(this); $filters.removeClass('active'); $this.addClass('active'); var $filterColor = $this.attr('data-filter'); if ($filterColor == 'all') { $boxes.removeClass('is-animated') .fadeOut().finish().promise().done(function() { $boxes.each(function(i) { $(this).addClass('is-animated').delay((i++) * 200).fadeIn(); }); }); } else { $boxes.removeClass('is-animated') .fadeOut().finish().promise().done(function() { $boxes.filter('[data-category = "' + $filterColor + '"]').each(function(i) { $(this).addClass('is-animated').delay((i++) * 200).fadeIn(); }); }); } }); })(jQuery);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ざっくり

javascript

1<style> 2.active{color:red} 3</style> 4<script> 5$(function(){ 6 $('.cta a').on('click',function(e){ 7 e.preventDefault(); 8 $(this).addClass('active').siblings().removeClass('active'); 9 var filter=$('.cta a.active').data('filter'); 10 $('.boxes a').toggle(filter=='all').filter(function(){return $(this).data('category')==filter}).show(); 11 }).filter('.active').trigger('click'); 12}); 13</script> 14<div class="cta filter"> 15 <a class="all active" data-filter="all" href="#" role="button">Show All</a> 16 <a class="green" data-filter="green" href="#" role="button">Show Green Boxes</a> 17 <a class="blue" data-filter="blue" href="#" role="button">Show Blue Boxes</a> 18 <a class="red" data-filter="red" href="#" role="button">Show Red Boxes</a> 19</div> 20 21<div class="boxes"> 22 <a class="red" data-category="red" href="#">Box1 r</a> 23 <a class="green" data-category="green" href="#">Box2 g</a> 24 <a class="blue" data-category="blue" href="#">Box3 b</a> 25 <a class="green" data-category="green" href="#">Box4 g</a> 26 <a class="red" data-category="red" href="#">Box5 r</a> 27 <a class="green" data-category="green" href="#">Box6 g</a> 28 <a class="blue" data-category="blue" href="#">Box7 b</a> 29 <a class="red" data-category="red" href="#">Box8 r</a> 30 <a class="green" data-category="green" href="#">Box9 g</a> 31 <a class="blue" data-category="blue" href="#">Box10 b</a> 32 <a class="red" data-category="red" href="#">Box11 r</a> 33 <a class="green" data-category="green" href="#">Box12 g</a> 34 <a class="blue" data-category="blue" href="#">Box13 b</a> 35 <a class="green" data-category="green" href="#">Box14 g</a> 36 <a class="red" data-category="red" href="#">Box15 r</a> 37 <a class="blue" data-category="blue" href="#">Box16 b</a> 38</div> 39

投稿2019/09/18 10:23

yambejp

総合スコア118164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/09/18 10:41

classとカスタムデータにおなじものを入れるくらいならどちらか片方にしたほうがよいでしょう フィルタしたい要素がredかつgreenなど組み合わせが必要ならclass そうでないならカスタムデータで良いと思います
yyyddd

2019/09/18 11:30

ご回答ありがとうございます。 いただいたコードを元にプルダウン仕様にカスタマイズさせていただきました。 カスタマイズしたコードを念の為貼っておきます。 感謝いたします。 【HTML】 <select id="cta" class="cta filter"> <option value="all">Show All</option> <option value="green">Show Green Boxes</option> <option value="blue">Show Blue Boxes</option> <option value="red">Show Red Boxes</option> </select> <div class="boxes"> <a class="red" data-category="red" href="#">Box1 r</a> <a class="green" data-category="green" href="#">Box2 g</a> <a class="blue" data-category="blue" href="#">Box3 b</a> <a class="green" data-category="green" href="#">Box4 g</a> <a class="red" data-category="red" href="#">Box5 r</a> <a class="green" data-category="green" href="#">Box6 g</a> <a class="blue" data-category="blue" href="#">Box7 b</a> <a class="red" data-category="red" href="#">Box8 r</a> <a class="green" data-category="green" href="#">Box9 g</a> <a class="blue" data-category="blue" href="#">Box10 b</a> <a class="red" data-category="red" href="#">Box11 r</a> <a class="green" data-category="green" href="#">Box12 g</a> <a class="blue" data-category="blue" href="#">Box13 b</a> <a class="green" data-category="green" href="#">Box14 g</a> <a class="red" data-category="red" href="#">Box15 r</a> <a class="blue" data-category="blue" href="#">Box16 b</a> </div> 【js】 $(function(){ $('.cta').change(function() { var filter=$('#cta').val(), $boxes = $('.boxes [data-category]');; $('.boxes a').toggle(filter=='all').filter(function(){return $(this).data('category')==filter}).show(); var $filterColor = $('#cta').val(); if ($filterColor == 'all') { $boxes.removeClass('is-animated') .fadeOut().finish().promise().done(function() { $boxes.each(function(i) { $(this).addClass('is-animated').delay((i++) * 200).fadeIn(); }); }); } else { $boxes.removeClass('is-animated') .fadeOut().finish().promise().done(function() { $boxes.filter('[data-category = "' + $filterColor + '"]').each(function(i) { $(this).addClass('is-animated').delay((i++) * 200).fadeIn(); }); }); } }); });
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問