为其中一个单元格或 td 查找 colSpan 标头是 Spans

Finding a colSpan Header for one of the cells or td's is Spans

本文关键字:colSpan 查找 td Spans 单元格 一个      更新时间:2023-09-26

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

我想输入列号并获取标题:示例列 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>

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

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列的位置。请参阅 演示 -> 单击任何 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);
});

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

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

请参阅演示。