2011-06-24 13 views
11

Powiel możliwe:
Table row and column number in jQueryjavascript: uzyskanie indeksu td

Jeśli mam tabeli tak:

<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> 

Gdy użytkownik kliknie pole wyboru, chcę aby uzyskać indeksy wierszy i kolumn. Mogę dostać indeks wiersza przy użyciu tego kodu:

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

ale nie mogę dowiedzieć się indeks kolumny ...

próbowałem tego, ale to nie działa:

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

Przejrzałem wyniki podobnych pytań tutaj i wydaje się, że muszę iterować przez wszystkie tds z każdym z nich lub mapą, czy jest coś prostszego, czego mogę użyć? Dzięki.

+0

Jednym z problemów jest umieszczenie znaczników wewnątrz znaczników . Nie sądzę, że jest to zgodne z prawem umieszczanie ich bezpośrednio w tagu . – JohnFx

+0

Po prostu zapomniałem dodać ich w pytaniu przykładowym ... jest piątek. : D Edytowałem to. – PruitIgoe

+0

Czy mogę zapytać, co robisz z indeksami wiersza/kolumny? Możemy mieć pomysł na alternatywę tam, gdzie jej nie potrzebujesz. – JohnFx

Odpowiedz

25

Zdobądź indeks <td> pierwsze, ponieważ znajduje się na drodze do <tr>:

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

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

albo stosując metodę parents()[docs] wraz z multiple-selector[docs], można zrobić wybór dla obu naraz:

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

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

Dzięki, to jest bardziej eleganckie niż to, co robię . – PruitIgoe

+1

@Pruitlgoe: Nie ma za co. – user113716

+0

To działa dobrze. Dzięki za tę przydatną wskazówkę. –

Powiązane problemy