HTMLテーブルのセルがクリックされた際、クリックされた行の情報をjQueryで得る方法。
例として以下のテーブルを想定し、td要素をクリックすると起動されるイベントハンドラを定義する。
<!-- HTML --> <table id=tblPlanSpot1> <tr> <td>A</td> <td id="a">AA</td> <td>AAA</td> </tr> <tr> <td>B</td> <td>BB</td> <td>BBB</td> </tr> </table>
// JavaScript // イベントハンドラ $('#tblPlanSpot1 td').live('click',function(){ var $cur_td = $(this)[0]; // (1):セルのHTML表現 [0]をつける点に留意のこと。 var $cur_tr = $(this).parent()[0]; // (2):行のHTML表現 // // $cur_tr = $(this).closest('tr')[0]; // このほうが確実 }
ここでセルAA(ハイライトされた行)をクリックすると、$cur_td, $cur_trにはそれぞれ次の値がセットされる。
$cur_td = "<td id="a">AA</td>" $cur_tr = "<tr><td>A</td><td id="a">AA</td><td>AAA</td></tr>"
これらはオブジェクトになっているので、いろいろなプロパティにアクセス可能。
$cur_td.id // "a"がセットされる。(<td id="a"> のid値) $cur_td.rowIndex // 1がセットされる(上から数えたテーブルの行番号) $cur_td.closest('tr').children('td:eq(1)') // 同じ行の2番目のセル
その他いろいろなメソッドが用意されている。
- children([exp]) 子要素(孫要素以降は対象外)
- next([exp]) 次の要素(弟要素)
- nextAll([exp]) すべての弟要素
- parent([exp]) 親要素
- parents([exp]) 先祖要素
- prev([exp]) 前の要素(兄要素)
- prevAll([exp]) すべての兄要素
- siblings([exp]) すべての兄弟要素
パラメータexpには要素セレクタ式を指定する(例:parent(‘td’))。省略すると、最初に合致する要素が得られる。