ソースコード
以下は、タブを切り替えた際にAjaxでページコンテンツを取得して更新するサンプル
<div id="container">
<ul>
<li><a href="html.html">HTML</a></li>
<li><a href="js.txt">JavaScript</a></li>
<li><a href="css.html">CSS</a></li>
<li><a href="jquery.html">jQuery</a></li>
<li><a href="php.php">PHP</a></li>
</ul>
<div></div>
</div>
$(function() {
var tabs = $('#container');
$('> ul li:first a', tabs).addClass('selected');
$('> div', tabs).load(
$('> ul li:first a', tabs).attr('href')); // 初期表示
$('> ul li a', tabs).click(function(e) {
if (!$(this).hasClass('selected')) { // 選択中のタブの再クリックは無視する
$('> ul li a.selected', tabs).removeClass('selected');
$(this).addClass('selected');
$('> div', tabs).load($(this).attr('href')); // 選択されたコンテンツを取得して更新
}
e.preventDefault();
});
});
#container {
width: 690px;
}
#container > ul {
margin: 0px;
padding: 0px;
}
#container > ul li {
list-style-type: none;
float: left;
line-height: 160%;
width: 138px;
height: 40px;
}
#container > ul li a {
display: block;
text-align: center;
text-decoration: none;
background-color: #cfc;
color: #000;
border: solid 1px Black;
}
#container > ul li a.selected {
background-color: #000;
color: #fff;
}
#container > div {
border: 1px solid #c0c0c0;
border-top: none;
padding: 15px;
}
タブパネルの構造
タブパネルの基本
タブをul要素で、タブの内容を表すパネル部分をdiv要素で、タブパネル全体を<div id="container">
要素で囲んでいる。
タブリストを横並びにする
cssでタブリストを横並びにする。
タブパネルの内容はa要素で表す
パネルに表示する内容はa要素のhref属性を表す。
これはJavaScriptがオフになっている場合を考慮しての措置で、動作させるだけであればdata-xxx
属性で指定すればよい。
通常、選択時のスタイルを定義する
タブに対して、通常時と選択時のスタイルを定義しておき、JavaScriptでクラスを付与して切り替える。
loadメソッドで外部ファイルを読み込む
loadメソッドはjQueryで提供されており、指定されたファイルを読み込み、現在の要素に反映する
タブクリック時にパネルの内容を読み込む
先頭のタブを選択状態にする
ページロード時にタブパネルを初期化する。
タブが選択された時にパネルの内容を書き換える
クリックされたタブパネルにselected
クラスを付与して選択状態にし、パネルの内容を取得して更新する。
また、直前まで選択されていたタブの選択状態を解除する