0

我有多个跨越多列的列标题,我想为这些列找到正确的标题编号/计数。

我想输入一个列号并获取标题:示例第 5 列是 RDataTest6 $('td.eq(5)) 并且它的标题是 HTest3 $('th.eq(2))


例子:

<table>
    <tr>
        <th>HTest1</th>
        <th colSpan="2">HTest2</th>
        <th colSpan="4">HTest3</th>
        <th colSpan="2">HTest4</th>         
    </tr>
    <tr>
        <td>RDataTest1</td>
        <td>RDataTest2</td>
        <td>RDataTest3</td>
        <td>RDataTest4</td>
        <td>RDataTest5</td>
        <td>RDataTest6</td>
        <td>RDataTest7</td>
        <td>RDataTest8</td>
        <td>RDataTest9</td>
    </tr>
</table>

​</p>

4

2 回答 2

1

编辑:您应该实现一个简单的数组来保存标题位置,见下文,

var thLocator = [], colCount = 1;
$table.find('tr:first th').each(function () {
    for (var i = 0; i < this.colSpan; i++) {
        thLocator.push(colCount);
    }
    colCount++;
});

$table.find('td').click(function () {
    alert(thLocator[$(this).index()]);
});

然后随时可以获取 td 列的位置。参见DEMO -> 单击任何 TD 以识别其 col 头位置。


我不确定你想要哪个计数,所以我写下了所有 col 计数。见演示

$(function() {
    var $table = $('table');

    alert('Table Header Count ' + $table.find('tr:first th').length);

    var thCount = 0;
    $table.find('tr:first th').each(function () {
        thCount += this.colSpan;
    });

    alert('Computed TH Count ' + thCount );

    alert('Table TD Col Count ' + $table.find('tr:eq(1) td').length);
});
于 2012-04-25T19:25:23.173 回答
0

这很容易,只要你没有任何rowspans:

function getCell(tr, col) {
    var cell = tr.firstElementChild;
    while (cell && (col -= cell.colSpan || 1)>=0)
        cell = cell.nextElementSibling;
    return cell;
}

示范

于 2012-04-25T19:54:42.300 回答