1

我正在尝试计算我的表格的总列。

例如

   <table>
      <tr>
        <td>55</td>
        <td>22</td>
        <td>66</td>
      </tr>  
      <tr>
        <td>1</td>        
        <td>2</td>
        <td>3</td>        
      </tr>
   </table>

上面的结构将给我总共 3 列。

我也在为我的 td 做点什么。

我的代码就像

 $("table td").each(function(){
        codes to manipulate td...
 })

each我想知道我是否可以在上面的代码中计算我的表的最大列。

谁能给我一个提示?谢谢!

4

5 回答 5

2

$("table td").length将返回表上的所有列(6)不是你想要的。

$("table tr:eq(0) td").length, 会给你第一行的列数。

于 2013-10-19T00:14:06.493 回答
1
Math.max.apply(null, $("table tr").map(function(_,row) { return $(row).find("td").length; }))
于 2013-10-19T00:17:17.107 回答
1

下面将计算第一行的列数。它增加第一行中那些列的计数(使用 确定.index):

var cols = 0;
$("table td").each(function(){
    if ($(this).closest("tr").index() == 0) cols++;
})

(小提琴)


以下计算表中的最大列数(如果行具有可变列数,则很有用):

var maxColumns = Math.max.apply(null, $("table tr").map(function() { 
    return $(this).find("td").length; 
}));

(小提琴)

于 2013-10-19T00:12:30.240 回答
0

我能想到的最简单、最高效和最可重用的解决方案是:

function colCount($table) {
  return $table.find('tr').eq(0).children().length;
}

var cols = colCount($('table#myTable'));
于 2013-10-19T01:05:56.807 回答
0

谢谢lbu,但我希望我可以在每个函数中编写一些代码

可以,但不是很干净...

演示

var maxCols = 0,
    firstTr = $('table tr:first-child')[0];

$("table td").each(function() {
    var $this = $(this);

    if ($this.parent()[0] === firstTr) {
        maxCols += parseInt($this.attr('colspan'), 10) || 1;
    }
});

注意:这也可以解释 colspans。

于 2013-10-19T00:29:59.030 回答