Tôi có một bảng HTML chứa cả ROWSPAN và COLSPAN.Làm cách nào để tìm "vị trí trực quan" của mỗi ô trong bảng bằng cách sử dụng jQuery?
Tôi làm cách nào để tìm "vị trí trực quan" của mỗi ô bằng jQuery?
Ví dụ, đây là một hình ảnh đại diện của bảng của tôi với mỗi tế bào dân với những gì "vị trí thị giác" thuật toán sẽ trả về:
(Lưu ý: Tôi chỉ thực sự quan tâm đến các tế bào trong <tbody>
và tham chiếu cột có thể một số nguyên, không phải là một ký tự chữ cái, tôi đã chỉ làm điều này dễ dàng làm nổi bật vấn đề)
+--+--+--+--+--+
| |A |B |C |D |
+--+--+--+--+--+
|1 |A1|B1 |D1|
+--+--+--+--+ +
|2 |A2 |C2| |
+--+ +--+ +
|3 | |C3| |
+--+--+--+--+--+
|4 |A4|B4|C4|D4|
+--+--+--+--+--+
|XYZ |
+--+--+--+--+--+
tôi đã cố gắng thực hiện đầu tiên, tuy nhiên các tài liệu tham khảo cho ô C3 là không chính xác vì nó không mất vào tài khoản ROWSPANS. Liên kết thứ hai có thể được hợp nhất vào giải pháp đầu tiên, nhưng tôi không thể tìm ra cách.
- 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
Tôi đang hy vọng sẽ sử dụng như là một chức năng gọi là getCellLocation(cell)
rằng sẽ trả về một mảng kết hợp trả về vị trí một cái gì đó như thế này:
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>');
});
Dưới đây là HTML của bảng ví dụ:
<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>
và đây là jsFiddle của nó: http://jsfiddle.net/bcnEW/ –
Dường như có một vấn đề nhỏ hoặc đếm đôi trong một số tình huống. Xem xét kết quả khi nó được áp dụng cho bảng này (xem ô Col3 Row2): [http://jsfiddle.net/tUn54/](http://jsfiddle.net/tUn54/) – Turgs
cập nhật câu trả lời của tôi và câu đố: http: //jsfiddle.net/bcnEW/1/ –