我有以下简单的jQuery,它告诉我一个单元格在表格内的行/列(不包括colspans)。
var col = $this.index() + 1;
var row = $this.closest('tr').index() + 1;
足够简单......除了我的表嵌套在其他表中,我不知道偏移应该是什么。例如,我有单元格(1,1),这个单元格在一个表格中,它位于另一个表格的第二个单元格中......并且该第一个单元格有一个包含三列的表格。所以我的细胞真的是(4,1)
编辑:更完整的示例,包含更多测试用例。我几乎已经解决了。只是一些引起问题的奇怪案例。 (现在有彩色测试)
http://jsfiddle.net/gibble/J3uER/
......我意识到这不正常,而且html是愚蠢的,但这是我需要使用的。
答案 0 :(得分:2)
我用迭代计数器做到了。这有点复杂,但你的任务也是如此。 :) 并且一些html修改是必要的:我们必须标记主行以使它们与嵌套行不同。我添加了类.row来达到这个目的。
$('td').click(function (event) {
event.stopPropagation();
$(this).addClass('clicked');
var row = 0;
$('tr.row').each(function () {
row++;
if ( $(this).find('.clicked').length )
{
var td = 0;
$(this).find('td').each(function () {
if ( !$(this).find('td').length )
{
td++;
if ( $(this).is('.clicked') )
{
alert( 'row = ' + row + ', td = ' + td );
$('.row .clicked').removeClass();
}
}
}); // td each
}
}); // .row each
}); // td click
<table>
<tr class="row">
<td>A1</td>
<td>B1</td>
...
</tr>
<tr class="row">
<td>A2</td>
<td>B2</td>
...
</tr>
</table>
<table>
<tr class="row">
<td>
<table>
<tr>
<td>A3</td>
<td>B3</td>
...
</tr>
</table>
</td>
<td>
<table>
<tr>
<td>F3</td>
<td>G3</td>
...
</tr>
</table>
</td>
</tr>
</table>