2012-04-25 12 views
0

我有多个列标题,其中包含多个列,我想找到正确的列标题号/计数列。为其中一个单元格或td找到colSpan标题是Spans

我要输入列数,并获得头:例如第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> 

+0

问题是什么? – 2012-04-25 19:19:12

+0

上表中的计数/数字是多少?如何计算'tr-> td'中的列数? – 2012-04-25 19:20:04

回答

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头部位置。


我不确定你想要哪个数,所以我写下了所有列数。见DEMO

$(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); 
}); 
+0

我想输入列号并获取标题:示例列5是RDataTest6 $('td.eq(5)),其标题是HTest3 $('th.eq(2)) – Nation 2012-04-25 19:39:44

+0

@Nation检查更新后的DEMO并让我知道如果这是你想要的东西。 – 2012-04-25 19:47:31

+0

太棒了!谢谢Vega。 – Nation 2012-04-25 19:50:53

0

这很简单,只要你没有任何rowspan S:

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

demonstration

相关问题