2009-04-25 5 views

ответ

197

Вы можете использовать функцию Core/index в данном контексте, например, вы можете проверить индекс TD в его родительском TR, чтобы получить номер столбца, и вы можете проверьте индекс TR на столе, чтобы получить номер строки:

$('td').click(function(){ 
    var col = $(this).parent().children().index($(this)); 
    var row = $(this).parent().parent().children().index($(this).parent()); 
    alert('Row: ' + row + ', Column: ' + col); 
}); 

проверить бегущий пример here.

+11

Это не работает, если в таблице есть пробелы столбца. – grom

+0

Почему это не работает в столбцах @grom? – EarlyPoster

+0

@Forkrul Assail, @CMS Сбой с 'ROWSPAN' http://jsbin.com/eyeyu/1099/edit#preview Нажмите на ячейку с текстом _" 12 "_. Индекс столбцов должен быть ** 4 ** –

5

Можно ли выход, что данные в ячейках, как вы создаете таблицу ?

так ваша таблица будет выглядеть следующим образом:

<table> 
    <thead>...</thead> 
    <tbody> 
    <tr><td data-row='1' data-column='1'>value</td> 
     <td data-row='1' data-column='2'>value</td> 
     <td data-row='1' data-column='3'>value</td></tr> 

    <tbody> 
</table> 

, то это было бы простым делом

$("td").click(function(event) { 
    var row = $(this).attr("data-row"); 
    var col = $(this).attr("data-col"); 
} 
+0

.onClick должен быть .click – mkoryak

+1

Какие спецификации HTML сделать эти атрибуты соответствуют ? Кажется, я не могу найти их. –

+5

HTML spec 5, который позволяет настраивать атрибуты, начиная с префикса 'data-'. –

1

лучше, чтобы связать обработчик щелчка на всю таблицу, а затем использовать event.target чтобы получить нажатый TD. Thats все, что я могу добавить к этому как его 1:20 am

+0

Хотя это может быть ценным советом для решения проблемы, хороший ответ также демонстрирует решение. Пожалуйста, [править], чтобы предоставить пример кода, чтобы показать, что вы имеете в виду. В качестве альтернативы подумайте о том, чтобы вместо этого писать это как комментарий. –

21

В верхней части моей головы можно было бы захватить все предыдущие элементы и посчитать их.

$('td').click(function(){ 
    var colIndex = $(this).prevAll().length; 
    var rowIndex = $(this).parent('tr').prevAll().length; 
}); 
111
$('td').click(function() { 
    var myCol = $(this).index(); 
    var $tr = $(this).closest('tr'); 
    var myRow = $tr.index(); 
}); 
23

Получить COLUMN INDEX на клик:

$(this).closest("td").index(); 

Получить ROW INDEX по щелчку:

$(this).closest("tr").index(); 
Смежные вопросы