jQueryで作る2種類のアコーディオン
jQueryを使用して、2種類のアコーディオンを作成します。
2種類といっても、動作が少し違うだけです。。。
HTMLとCSS
<dl> <dt>1.タイトル</dt> <dd>サンプルテキストサンプルテキストサンプルテキスト</dd> <dt>2.タイトル</dt> <dd>サンプルテキストサンプルテキストサンプルテキスト</dd> <dt class="last-child">3.タイトル</dt> <dd>サンプルテキストサンプルテキストサンプルテキスト</dd> </dl>
dl {
width: 300px;
border: solid #000 1px;
}
dt {
padding: .5em;
height:30px;
background: #000;
border-bottom: solid #fff 1px;
color: #fff;
font-weight:bold;
}
dt.last-child {
border-bottom: none;
}
dd {
height:150px;
background: #fff;
}
1つのdd要素だけが開く:Javascriptソース
$(function(){
//CSSの設定
$("dt").css("cursor","pointer"); //dt要素のカーソルをポインターに変更
$("dd:not(:first)").css("display","none"); //最初のdd要素以外を非表示
//dt要素がクリックされたときの動作
$("dt").click(function(){
if($("+dd",this).css("display")=="none"){ //クリックされたdt要素に隣接するdd要素が非表示だった場合
$("dd").slideUp("slow"); //スライドアップで非表示
$("+dd",this).slideDown("slow"); //クリックされたdt要素に隣接するdd要素をスライドダウンで表示
}
});
});
動作
dt要素をクリックするとdd要素が閉じますが、クリックしたdt要素に隣接しているdd要素のみ開きます。
その設定が8行目からのif文で記載されています。
10行目で全てのdd要素をスライドアップで非表示にしています。
その後、11行目のクリックされたdt要素に隣接したdd要素をスライドダウンで表示しています。
10行目と11行目を逆にすると、開いてすぐに閉じてしまいます。
開きっぱなしのdd要素:Javascriptソース
$(function(){
//CSSの設定
$("dt").css("cursor","pointer"); //dt要素のカーソルをポインターに変更
$("dd").css("display","none"); //最初のdd要素以外を非表示
//dt要素がクリックされたときの動作
$("dt").click(function(){
if($("+dd",this).css("display")=="none"){ //クリックされたdt要素に隣接するdd要素が非表示だった場合
$("+dd",this).slideDown("slow"); //クリックされたdt要素に隣接するdd要素をスライドダウンで表示
} else {
$("+dd",this).slideUp("slow"); //クリックされたdt要素に隣接するdd要素が表示されていた場合、スライドアップで非表示
}
});
});
動作
dt要素をクリックすると隣接しているdd要素が開きます。
その他のdd要素は反応しません。
8行目のif文でdd要素が非表示だった場合の設定が記述されていますが、
11行目のelseでdd要素が表示されていた場合の設定を記述しています。
サンプル
こちらから、2つのサンプルを確認できます。
サンプル
- Web-Parkのホーム >
- Javascript >
- jQueryで作る2種類のアコーディオン
Warning: count(): Parameter must be an array or an object that implements Countable in /home/markcrest/web-park.org/public_html/wordpress/wp-includes/class-wp-comment-query.php on line 405
COMMENT PLEASE!!
トラックバック
- 「jQueryで作る2種類のアコーディオン」のトラックバックURL
Warning: Use of undefined constant display - assumed 'display' (this will throw an Error in a future version of PHP) in /home/markcrest/web-park.org/public_html/wordpress/wp-content/themes/default/single.php on line 105
http://web-park.org/javascript/accordion091124.html/trackback
COMMENT!!
とてもためになりました。
私が知っているアコーディオンのjQueryサイトで一番わかりやすかったです。
余計なプラグインを使っていないですし、コメントが入門に適していてとてもためになりました。
ありがとうございます。
ありがとうございます!
そう言って頂けると、ブログをしたかいがありました。
最近更新出来ていないのですが、むぎちゃさんのご意見で、やる気が出てきました!