【jQuery】プラグインなしでタブの切り替え機能を実装する方法

今回はプラグインを使わずにjQueryでタブを実装する方法を紹介します。

 

HTML

ulタグの中にliタグを複数用意して、タブとパネルにします。

一番目のタブにはclass=”select”を指定しておきます。これが最初からアクティブになっているタブです。

また、最初は表示させないパネルにはdisplay: noneを指定するので、class=”hide”を指定しておきます。(class=”hide”にはdisplay: none;を指定します)

<ul class="tab">
	<li class="select">タブ1</li>
	<li>タブ2</li>
	<li>タブ3</li>
	<li>タブ4</li>
</ul>
<ul class="content">
	<li>親譲りの無鉄砲で小供の時から損ばかりしている。小学校に居る時分学校の二階から飛び降りて一週間ほど腰を抜かした事がある。</li>
	<li class="hide">なぜそんな無闇をしたと聞く人があるかも知れぬ。別段深い理由でもない。</li>
	<li class="hide">新築の二階から首を出していたら、同級生の一人が冗談に、いくら威張っても、そこから飛び降りる事は出来まい。</li>
	<li class="hide">弱虫やーい。と囃したからである。小使に負ぶさって帰って来た時、おやじが大きな眼をして二階ぐらいから飛び降りて腰を抜かす奴があるかと云ったから、この次は抜かさずに飛んで見せますと答えた。</li>
</ul>

 

CSS

.hideクラスにdisplay: none;を指定するのは必須です。

それ以外のレイアウトなどはお好みで書き換えてください。

.tab{overflow:hidden;}
.tab li{background:#ccc; padding:5px 25px; float:left; margin-right:1px;}
.tab li.select{background:#eee;}
.content li{background:#eee; padding:20px;}
.hide {display:none;}

 

jQuery

処理はコメントに書いてある通りです。

$(function() {
	//クリックしたときのファンクションをまとめて指定
	$('.tab li').click(function() {

		//.index()を使いクリックされたタブが何番目かを調べ、
		//indexという変数に代入します。
		var index = $('.tab li').index(this);

		//コンテンツを一度すべて非表示にし、
		$('.content li').css('display','none');

		//クリックされたタブと同じ順番のコンテンツを表示します。
		$('.content li').eq(index).css('display','block');

		//一度タブについているクラスselectを消し、
		$('.tab li').removeClass('select');

		//クリックされたタブのみにクラスselectをつけます。
		$(this).addClass('select')
	});
});

 

index(this)でクリックされたタブの番号を調べ、その要素に処理を行います。

コンテンツを一度全て非表示にし、クリックされたタブだけを再度表示するようにします。

また、.selectクラスもクリックされたタブに移動しておきます。