2011-06-24 41 views
11

可能重複:
Table row and column number in jQuery的javascript:獲得TD指數

如果我有一個表像這樣:

<table> 
    <thead> 
    <tr><th>1</th> <th>2</th> <th>3</th></tr> 
    </thead> 

    <tbody> 
    <tr><td>data</td> <td>checkbox</td> <td>data</td></tr> 
    </tbody> 
</table> 

當用戶點擊該複選框,我想獲取行和列索引。我可以通過使用此代碼獲取行索引:

var row = $(this).parent().parent(); 
var rowIndex = $(row[0].rowIndex); 

,但我想不出列索引...

我試過,但沒有奏效:

var colIndex = $(row.children().index(this).parent()); 

我翻看了這裏的類似問題的結果,似乎我必須遍歷所有的tds與每個或地圖,是否有更簡單的,我可以使用?謝謝。

+0

那麼,一個問題是,你需要在標籤內嵌套​​標籤。我認爲將它們直接放入標記是不合法的。 – JohnFx

+0

他們是我忘了把它們添加到問題的例子中......這是星期五。 :D我編輯它。 – PruitIgoe

+0

我可以問你在做什麼行列索引?如果你不需要它,我們可能會有一個想法。 – JohnFx

回答

25

獲取<td>的指數第一,因爲它是對的方式向<tr>

var cell = $(this).closest('td'); 
var cellIndex = cell[0].cellIndex 

var row = cell.closest('tr'); 
var rowIndex = row[0].rowIndex; 

或使用連同multiple-selector[docs]parents()[docs]方法,你可以同時做選擇兩種:

var cellAndRow = $(this).parents('td,tr'); 

var cellIndex = cellAndRow[0].cellIndex 
var rowIndex = cellAndRow[1].rowIndex; 
+1

謝謝,這比我做的更優雅。 – PruitIgoe

+1

@Pruitlgoe:不客氣。 – user113716

+0

這很好。感謝這個有用的提示。 –