2012-04-25 36 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

相關問題