У меня есть таблица HTML, содержащая как ROWSPAN, так и COLSPAN.Как я могу найти «визуальное местоположение» ячейки таблицы, используя jQuery?
Как я могу найти «визуальное местоположение» каждой ячейки с помощью jQuery?
Например, вот визуальное представление моей таблицы с каждой ячейкой, населенной с тем, что алгоритм «визуальное расположение» должен вернуться:
(Примечание: Я только действительно забочусь о клетках в <tbody>
и ссылке на столбец может быть целое число, не буквенный символ, я сделал только это легко выделить проблему)
+--+--+--+--+--+
| |A |B |C |D |
+--+--+--+--+--+
|1 |A1|B1 |D1|
+--+--+--+--+ +
|2 |A2 |C2| |
+--+ +--+ +
|3 | |C3| |
+--+--+--+--+--+
|4 |A4|B4|C4|D4|
+--+--+--+--+--+
|XYZ |
+--+--+--+--+--+
Я попытался реализации первой, однако ссылка на ячейки C3 является неточной, как он не принимает учитывать ROWSPANS. Вторая ссылка может быть объединена в решение первой, но я не могу понять, как это сделать.
- Working with tables in jQuery | My Tech World
- What's the most efficient way to retrieve the column of rows affected by a "rowspan"? - Stack Overflow
Я надеюсь использовать это как функция называется getCellLocation(cell)
, которая будет возвращать ассоциативный массив, который возвращает расположение что-то вроде этого:
function getCellLocation(cell)
{
var row_number = parseInt($(cell).parent().prevAll().length) + 1;
var col_number = 1;
$(cell).prevAll('td').each(function() {
col_number += $(this).attr('colspan') ? parseInt($(this).attr('colspan')) : 1;
});
var location = new Array();
location['row'] = row_number;
location['col'] = col_number;
location['index'] = $('td').index(cell) + 1;
return location;
}
$('table td').each(function(i){
var cell = getCellLocation($(this));
$(this).prepend('<span class="ref">R' + cell['row'] + ':C' + cell['col'] + ':D' + cell['index'] + '</span>');
});
Вот HTML таблицы примеров:
<table border="1" cellspacing="0">
<thead>
<tr>
<th></th>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>A1</td>
<td colspan="2">B1</td>
<td rowspan="3">D1</td>
</tr>
<tr>
<th>2</th>
<td rowspan="2" colspan="2">A2</td>
<td>C2</td>
</tr>
<tr>
<th>3</th>
<td>C3</td>
</tr>
<tr>
<th>4</th>
<td>A4</td>
<td>B4</td>
<td>C4</td>
<td>D4</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="5">XYZ</td>
</tr>
</tfoot>
</table>
<style> span { background-color: #ffc; margin-right: .5em;} </style>
и вот jsFiddle его: http://jsfiddle.net/bcnEW/ –
Там, кажется, небольшая проблема или двойного учета в некоторых сценариях. Рассмотрим результат, когда он применяется к этой таблице (см. Ячейку Col3 Row2): [http://jsfiddle.net/tUn54/](http://jsfiddle.net/tUn54/) – Turgs
обновил мой ответ и скрипку: http: //jsfiddle.net/bcnEW/1/ –