jqueryでアコーディオン
下記がとても参考になる
参考ページ
■html部分
<div> <h3 class="accordion_head">アコーディオンのトリガー部分</h3> <p>アコーディオンする部分。</p> </div>
■スクリプト部分
<script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('.accordion_head').click(function() { $(this).next().slideToggle(); }).next().hide(); }); </script>
■詳細
まずページを表示させるとscript部分6行目の.next().hide();が実行されます。
「トリガー(.accordion_head)の次の要素(next)を隠す(hide)」という命令ですね。
これでアコーディオンしたい部分が隠されて表示されるわけです。
次にトリガークリックで実行される部分。5行目の$(this).next().slideToggle();
このとき$(this)にはクリックしたトリガーが入っています。
「トリガー(.accordion_head)の次の要素(next)をスライド(slideToggle)する」ってことですね。
こう書いておくことで同じページに何個もアコーディオンがあっても、クリックしたトリガーだけ実行されます。
slideToggleなのでクリックで表示非表示を交互に実行します。
slideToggle()の中に’slow’(遅い)、’nomal’(普通(指定なしと同じ))、’fast’(早い)を入れるとスライドスピードも変えられます。
超シンプルなコードなので色々カスタマイズできそうですね。
(classを足して開いているアコーディオンだけ色変えたりとか、一個表示してるときは他のアコーディオンは隠すとか。。。)
■一括開閉にチャレンジ!
$('.accordion_all_head').click(function() { $('.accordion_head').next().slideToggle(); });
■一番最初だけ開いた状態にチャレンジ!
$('.accordion_head:first').next().show();
■つのアコーディオンを開くと他は閉まるにチャレンジ!
$(document).ready(function(){ $('.accordion_head').click(function() { $('.accordion_head').next().slideUp(); //←ここ追記 $(this).next().slideToggle(); }).next().hide(); });
■開いているアコーディオンの色を変えるにチャレンジ!
$(document).ready(function(){ $('.accordion_head').click(function() { //ここから if($(this).is(".selected")){ $(this).removeClass("selected"); }else { $(this).addClass("selected"); } //←ここまで追記 $(this).next().slideToggle(); }).next().hide(); });
.selected { background:選択中の色; } .selected + * { background:選択中の色; }