スポンサーリンク
- サイトにアコーディオンメニューを実装したい!
そんな方々に向けて、アコーディオンメニューの作成法を紹介します。
スポンサーリンク
この記事を読んで作れるもの
この記事では、jQueryを使って、メニューが5つあるアコーディオンメニューを作ります。
「タイトル」を押せば「テキスト」が表示される簡単なつくりです。
簡単なつくりのほうが、使いまわす時に便利かなぁと。
コードの紹介
jQueryはhtmlの中に書きました。CSSは使いまわす時に不便なので使っていません。
今回の創作に関係するところはマーキングしてあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery</title> </head> <body> <div class="ttl1"> タイトル1 </div> <div class="txt1"> テキスト1 </div> <div class="ttl2"> タイトル2 </div> <div class="txt2"> テキスト2 </div> <div class="ttl3"> タイトル3 </div> <div class="txt3"> テキスト3 </div> <div class="ttl4"> タイトル4 </div> <div class="txt4"> テキスト4 </div> <div class="ttl5"> タイトル5 </div> <div class="txt5"> テキスト5 </div> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript"> $(".ttl1").click(function(){ $(".txt1").slideToggle(); }); $(".ttl2").click(function(){ $(".txt2").slideToggle(); }); $(".ttl3").click(function(){ $(".txt3").slideToggle(); }); $(".ttl4").click(function(){ $(".txt4").slideToggle(); }); $(".ttl5").click(function(){ $(".txt5").slideToggle(); }); </script> </body> </html> |
お役立ちメモ
- 「slideToggle」の「T」は大文字です。「slidetoggle」だと動きません。
- メニューごとにクラス名を変えています(txt1、txt2、…)。同じクラス名にすると、1つのメニューをクリックすることで、全てのメニューが開いてしまいます。
slideToggleが効かないとき(代替案)
原因不明のバグに悩んだときの代替案を紹介します。
bootstrap4のアコーディオンを使う
bootstrap4のコンポーネントを使用しましょう。
下記の参考リンクからソースをコピペできます。
ただし、テンプレートどおりだと、1つのメニューを開けば他のメニューが閉じてしまう仕様になっているので、それが嫌な場合は個別に直す必要があります。
jQueryのif文を使う
jQueryのif文を使う方法もあります。
「タイトル」をクリックしたとき、もし「テキスト」が非表示なら表示させ、非表示なら表示させる
というif文を作ればokです。なんとなく難しそうですが、実際はそうでもないです。
コードの紹介
せっかくなので、こちらのコードも記録します。
「slideToggle」との違いは、メニューごとのクラス名変更がいらないこと。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery</title> </head> <body> <div class="ttl"> タイトル1 </div> <div class="txt"> テキスト1 </div> <div class="ttl"> タイトル2 </div> <div class="txt"> テキスト2 </div> <div class="ttl"> タイトル3 </div> <div class="txt"> テキスト3 </div> <div class="ttl"> タイトル4 </div> <div class="txt"> テキスト4 </div> <div class="ttl"> タイトル5 </div> <div class="txt"> テキスト5 </div> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $(".txt").hide(); $(".ttl").on("click",function(){ if ($(this).is(':hidden')) { $(this).next().toggle(); } else { $(this).next().toggle(); } }); }); </script> </body> </html> |
今回のまとめ
いかがでしたでしょうか。
これからも役に立ちそうなスキルを投稿していきますので、よろしくお願いします!