/* HTML
<ul class="accordion">
<li>
<p>XXXXXXXX</p>
<div class="content">
<p>XXXXXXXXXXXXXXXXXX</p>
</div>
</li>
<li>
<p>XXXXXXXX</p>
<div class="content">
<p>XXXXXXXXXXXXXXXXXX</p>
</div>
</li>
<li>
<p>XXXXXXXX</p>
<div class="content">
<p>XXXXXXXXXXXXXXXXXX</p>
</div>
</li>
</ul>
*/
/* CSS
// アコーディオン:デフォルト(閉)
.accordion > li { cursor: pointer; }
.accordion > li .content { display: none; }
// アコーディオン:クリック時(開)
.accordion > li.expanded { background-color: #ededed; }
.accordion > li.expanded > p { font-weight: bold; }
*/
$(function(){
$('.accordion')
.on('click', 'li', function() {
var $this = $(this);
// コンテンツを開く
$this
.toggleClass('expanded') // toggleClass:()内で指定したクラスが対象要素に無ければ追加・有れば削除 → addClass()とremoveClass()を合わせたようなメソッド
.children('.content') // children:直接の子要素のみを取得
/* .toggle(速度)、.slideToggle(速度)共に、CSSのdisplayプロパティを切り替えるメソッド
対象要素のdisplayプロパティがnoneならblockまたはinlineに。inlineまたはblockならnoneに切り替える。 */
.slideToggle('fast') // .slideToggle(速度)は上下開閉のアニメーション */
// ↓↓↓ 他のアコーディオンを開くと、すでに開いている他のアコーディオンが閉じる仕組み ↓↓↓
.end() // 直前のトラバースをキャンセルして、ひとつ前の状態に戻す $this.parent().siblings() → $this.parent()
.siblings() // 兄弟要素を全て返す → liを取得
.removeClass('expanded') // 要素からクラス(.expanded)を削除
.children('.content')
.slideUp('fast'); // 要素のheightプロパティが0になるまで徐々に減らし、最終的にはdisplayをnoneにする
});
});
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.