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 をクリックして、列の先頭位置を特定します。


どのカウントが必要かわからないので、すべての列カウントを書き留めました。デモを見る

$(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 に答える