シマシマなテーブルをjQueryで作る

2007年1月20日

またまたjQueryネタです。最近多いですね(汗
今回は巷で流行り(?)のストライプテーブルをjQueryを使って実装してみます。

まずはテーブルを作成しclass属性を予め付けておきます。クラス名は”stripe”にします。テーブルは何行でも何列でもかまいません。極端な話1000行とかでも大丈夫です。全てにjQueryで自動的にクラスを付加してしまいます。

<table class="stripe">
<tr>
<th></th>
..以下略

次ぎにいつものおまじない。下記のように書くことでbody内に書くonloadの代わりになるのでした。

$(document).ready(function(){
  //コードをここに記述
}

jQueryで奇数番のtrにクラスを付与する

さて、jQueryでクラス属性をつけるには.addClassを使うのでした。ストライプにしたいので、奇数番のtr要素にクラスをつけるには下記のように:evenを使います。

$(document).ready(function(){
  $(".stripe tr:even").addClass("even");
}

あとはcssでtrの背景色を下記のように指定してやります。

tr.even td {
	background: #F2F0EE;
}

これで完成です。早っ!・・・とまぁ、これだけだと味気ないのでもうひと手間やってみます。テーブルのセルにマウスオーバーしたとき色が反転するようにします。マウスオーバーした時のCSSを下記のように指定します。

tr.over td {
	background: #666666;
	color: #FFFFFF;
}

jQueryのコードにはマウスオーバーしたときのアクションを指定します。

$(document).ready(function(){
	$(".stripe tr").mouseover(function(){
		$(this).addClass("over");
	});
$(".stripe tr:even").addClass("even");
});

これでマウスオーバーした時に色が反転するようになりましたが、カーソルをそらしても戻らなくなってしまいました。色を戻るようにするためにはjQueryのメソッド「removeClass」を使って、付加したクラス属性を削除してあげる必要があります。最終的なスクリプトのコードは下記になります。

$(document).ready(function(){
	$(".stripe tr").mouseover(function(){
		$(this).addClass("over");
	}).mouseout(function(){
		$(this).removeClass("over");
	});
$(".stripe tr:even").addClass("even");
});

いかがでしたでしょうか?クラス属性の付加、削除ができるということはかなり便利だと思います。様々な使い方ができると思うので是非jQueryを使ってみてください。

関連エントリー
このエントリーのトラックバックURL
http://www.lllcolor.com/web/ajax/32.html/trackback

このエントリーに投稿されたコメント

kt - 2008.01.9 -PM 11:28

1ページ内に奇数の行数で構成される複数のテーブルがある場合にシマシマがテーブルをまたがって適用されませんか?

kt - 2008.01.9 -PM 11:45

$(document).ready(function(){
$(”table.tableStripe”).each(function(){
$(”tr:odd”, this).addClass(”odd”);
});
});
のような感じで出来ました。jquery 初めて使いましたが分かりやすいですね。

uko - 2008.04.22 -PM 5:54

始めまして。
jQueryを使ったシマシマテーブル使用させて頂きました!
ありがとうございます!
このシマシマテーブルのセルにリンクを付ける事は出来ないのでしょうか?
jQueryはほぼ無知なので分かれば教えてください。。。
よろしくお願い致します!

コメントを投稿する場合は次のフォームよりお願いします

コメント投稿フォーム
(スタイル用HTMLタグが使えます)

ページの先頭に戻る