簡単なjQueryのタブ切替サンプル
2009年 5月 4日 (月) / PM 11:06
ホームページ制作でタブやアコーディオンなどを設置する事があるのですが、そういうケースではjQueryが便利です。
昨日の簡単なアコーディオン処理のサンプルに続いて簡単なタブ切替処理のサンプルを作ってみました。
以下、サンプルの解説。
今回もjQueryはGoogleからもらい、jQueryの処理は外部ファイルとしてまとめます。
全体は実際のサンプルページのHTMLソースを参考して下さい。
<div id="tab">
<ul id="nav">
<li>タブ1</li>
<li>タブ2</li>
<li>タブ3</li>
<li>タブ4</li>
<li>タブ5</li>
</ul>
<div>タブ1の内容物</div>
<div>タブ2の内容物</div>
<div>タブ3の内容物</div>
<div>タブ4の内容物</div>
<div>タブ5の内容物</div>
</div>
HTML部分は非常に単純です。
次にjQuery部分の処理は以下の通り。
$(document).ready(function(){
// 初期設定
// #nav直下の全li要素の中から最初のli要素に.selectを追加
$("#nav > li:first").addClass("select");
// #nav直下の全li要素にマウスオーバーしたらリンク要素に偽装
$("#nav > li").hover(function(){
$(this).css("cursor","pointer");
},function(){
$(this).css("cursor","default");
});
// #tab直下の全div要素を非表示
$("#tab > div").hide();
// #tab直下の全div要素の中から最初のdiv要素を表示
$("#tab > div:first").show();
// タブ切替処理
$("#nav > li").click(function () {
// #nav直下の全li要素のclass属性を削除
$("#nav > li").removeClass("select");
// クリックしたli要素に.selectを追加
$(this).addClass("select");
// #tab直下の全div要素を非表示
$("#tab > div").hide();
// クリックしたタブのインデックス番号と同じdiv要素をフェード表示
$("#tab > div").eq($("#nav > li").index(this)).fadeIn();
});
});
最後の処理がちょっと難しいかなぁ
試行錯誤して出来ました(^^)
ありがとうございます!
やっぱりそうなりますよね。
ただ、出来ればカンタンに設置できればと思っているので色々カスタマイズを考えているんです。
理想は、CSSもHTMLもjsも数を増やしても変更しなくていいってのが理想です。
こちらでも思考錯誤してますが、何か案がありましたらお教えください。
よろしくお願いします。
HTMLとjQuery両方のIDを変えてやるのが簡単だとおもいます。
#tab_1 / #nav_1
#tab_2 / #nav_2
みたいに。
同ページ内で2カ所に設置したい場合はどうしたらいいですか???
参考になって幸いです(^^)
はじめまして。
自分のサイトで世界遺産の紹介などをやっています。
サイトマップでのエリア別切り替えに、最近こちらのスクリプトを使わせていただくようにしました。clickをhoverに変えるとmouseoverでバッチリです。easytabsとか ui tabsとかありますが、
これ以上の軽量は無理かと。 今回はありがとうございました。