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サイトで一番わかりやすかったです。
余計なプラグインを使っていないですし、コメントが入門に適していてとてもためになりました。
ありがとうございます。
ありがとうございます!
そう言って頂けると、ブログをしたかいがありました。
最近更新出来ていないのですが、むぎちゃさんのご意見で、やる気が出てきました!