dt-ddのアコーディオンメニューでセパレートの線を引く
仕様
dt-ddのアコーディオンメニューでセパレートの線を引く
動作
- dtを押すとddが開き再度押すと消える。
- またddが開いている状態で別のdtを押すとすでに開いているddは消える
パターン
パターンは3つ。
- menu1
ddには常に下線がついていて開くと下線がみえ、閉じると消える
- menu2
dtを押すとddに下線がつき、別のdtを押すと自分のddに下線がひかれ、元のddの下線が消えてからスライドする
- menu3
dtを押すとddに下線がつき、別のdtを押すと、まずスライドしてから自分のddに下線がひかれ、元のddの下線が消えてからスライドする
ソース
html
test_11.htm
<html>
<head>
<link rel="stylesheet" type="text/css" href="test_11.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/j<script type="text/javascript" src="test_11.js"></script>
<title>test11 dt-ddのアコーディオンメニューでセパレートの線を引く</title>
</head>
<body>
<h1>test11 dt-ddのアコーディオンメニューでセパレートの線を引く</h1>
<h2>menu1</h2>
<dl id="menu1" class="accordion">
<dt>アコーディオン1</dt>
<dd>
<p>アコーディオン1の内容1</p>
<p>アコーディオン1の内容2</p>
</dd>
<dt>アコーディオン2</dt>
<dd>
<p>アコーディオン2の内容1</p>
<p>アコーディオン2の内容2</p>
</dd>
<dt>アコーディオン3</dt>
<dd>
<p>アコーディオン3の内容1</p>
<p>アコーディオン3の内容2</p>
</dd>
</dl>
<h2>menu2</h2>
<dl id="menu2" class="accordion">
<dt>アコーディオン4</dt>
<dd>
<p>アコーディオン4の内容1</p>
<p>アコーディオン4の内容2</p>
</dd>
<dt>アコーディオン5</dt>
<dd>
<p>アコーディオン5の内容1</p>
<p>アコーディオン5の内容2</p>
</dd>
<dt>アコーディオン6</dt>
<dd>
<p>アコーディオン6の内容1</p>
<p>アコーディオン6の内容2</p>
</dd>
</dl>
<h2>menu3</h2>
<dl id="menu3" class="accordion">
<dt>アコーディオン7</dt>
<dd>
<p>アコーディオン7の内容1</p>
<p>アコーディオン7の内容2</p>
</dd>
<dt>アコーディオン8</dt>
<dd>
<p>アコーディオン8の内容1</p>
<p>アコーディオン8の内容2</p>
</dd>
<dt>アコーディオン9</dt>
<dd>
<p>アコーディオン9の内容1</p>
<p>アコーディオン9の内容2</p>
</dd>
</dl>
</body>
</html>
css
test_11.css
.accordion dd.bor{
border-bottom: solid 1px;
}
javascript
test_11.js
$(function(){
$('.accordion dd').hide();
$('#menu1.accordion dd').addClass('bor').prev('dt').on('click',function(){;
$(this).next('dd').slideToggle().siblings('dd').slideUp();
});
$('#menu2.accordion dt').on('click',function(){
$(this).next('dd').addClass('bor').slideToggle().siblings('dd').removeClass('bor').slideUp();
});
$('#menu3.accordion dt').on('click',function(){
var dd=$(this).next('dd');
$.when(dd.slideToggle().siblings('dd').slideUp()).done(function(){
dd.addClass('bor').siblings('dd').removeClass('bor');
});
});
});