2011-12-29 18 views
2

いくつかの値を持つ表があります。第1の行および第1の列は、垂直および水平サイズと呼ばれる値を尊重している。私がする必要があるのは、表のセルをクリックし、そのクリックされた表のセルの水平および垂直の値を取得することです。基本的には、クリックされた表のセルがある行の最初の表のセルの値を取得し、クリックされた表のセルがある列の最初の表のセルの値を取得します。私は次のコードで水平値を取得しています:jQueryを使用して列の最初の表のセル値を取得する

var horizSize = $('th:first', $(this).parents('tr')).text(); 

しかし、私は垂直線のためにそれを行う方法がわかりません。列の最初の表のセルの値を取得する方法?

ありがとうございます。

答えて

5

var verticSize = $('tr:first td').eq($(this).index()).text(); 

JS Fiddle demoを。

horizSize = $(this).closest('tr').find('td:first').text(); 

、その後、洗練されたに:デモで私はまたに、あなたのhorizSizeセレクタを改正したこと

注上記

horizSize = $(this).prevAll('td:last').text(); 

あなたは、セルの値をしたいことを想定していそれがtheadまたはtbodyにあるかどうかにかかわらず、:firsttr要素からのものです。見出しセルにthとマークした場合は、セレクタのtdthに修正する必要があります。


編集フェリックスクリングさんのコメントに反応して:

代わりの$('tr:first td')$(this).closest('table').find('tr:first td')は(他のマークアップに応じて)良いかもしれません。

これは私が本当に考えていたはずのものです。複数のtableが文書内に存在する場合と、この変更は証明するために、不可欠のようになります。

var verticSize = $(this).closest('table').find('tr:first td').eq($(this).index()).text(); 

JS Fiddle demo

参考文献:

+0

+1、私は同じことを考えていました。 .index()のドキュメント(http://api.jquery.com/index/)を見てください。 – PPvG

+1

'$( 'tr:first td')'の代わりに '$(this).closest( 'table')。find( 'tr:first td')'が良いかもしれません。 –

+0

Davidありがとう!それは魅力のように機能します!これは私の場合のコードです:var verticSize = $( 'thead> tr:first th')。eq($(this).index())。 – cycero

0

あなたは、インデックスと右のセルに移動することができます。

$('table tr:gt(0)').each(function() { 

    var $valRow = $('table tr:eq(0)'); 

    $(this).find('td:gt(0)').css({ background: "red" }).click(function() { 

     var x = $valRow.find('td:eq(' + $(this).index() + ')').text(); // top row 
     var y = $(this).closest('tr').find('td:eq(0)').text(); // first cell of your row will be your first column cell 

     alert('x=' + x + '; y=' + y); 
    });; 
}); 

コード:私は次のように動作するはずだと思うhttp://jsfiddle.net/uKhwq/1/

関連する問題