2011-10-18 15 views
0

私はHTMLテーブルを持っており、jQueryを使用してクリックしたセルのパラメータを取得する必要があります。 どうすればいいですか?テーブルのパラメータを取得する方法

私は3行目、4列目を取得する必要があります。ここで私はあなたが行うことができ、これまで

var tr = $(this).parent(); 
for (var i = 0; i < tr.children().length; i++) { 
    if (tr.children().get(i) == this) { 
     var row = i + 1; 
     break; 
    } 
} 
+3

大文字のすべてを記述しないでください。それは読みにくいものになります。ありがとうございました!また、問題は、クリックイベントハンドラを各セルにバインド(または委任)することで解決できるようです。 jQueryのドキュメントを見てください。 –

答えて

2

を持っているものである:ここ

$('td').click(function(){ 
    var tr = $(this).closest('tr'); 
    var column = $(this).index()+1; 
    var row = tr.index()+1; 
    alert("you clicked row:"+row+" column:"+column); 
}); 

フィドル:http://jsfiddle.net/YA6WY/

+0

'index()'は、その親に対する要素の位置を取得することに注意してください。テーブルに複数の ''または ''要素がある場合、 'index()'は必要な結果を返しません。 –

0

あなたがそれぞれ<td><tr>cellIndexrowIndexプロパティにアクセスすることができます。非常に単純:

$('table').delegate('td', 'click', function (evt) { 
    var td = evt.target, 
     row = td.parentNode.rowIndex; 
     col = td.cellIndex; 

    alert("Row: "+row+", Column: "+col); 
}); 

の作業のデモ:あなたのイベントハンドラは、細胞上のすべてのクリックをキャッチ<table>要素への単一のイベントを追加することでパフォーマンスを向上させバインドするdelegate()を使用しhttp://jsfiddle.net/AndyE/T4u93/

event.targetはクリックを生成した要素を返します(この場合は<td>要素)。

関連する問題