1

这是表格:

<table>
<tr><td rowspan=2>---A----</td></tr>
<tr><td>Not to this td</td></tr>
<tr><td>Not to this td</td></tr>

<tr><td>-----B ---ADD here</td></tr>
<tr><td>Not to this td</td></tr>

<tr><td rowspan=3>---C---</td></tr>
<tr><td>Not to this td</td></tr>
<tr><td>Not to this td</td></tr>
<tr><td>Not to this td</td></tr>
</table>

本质上,我要检查的是 td 是否具有行跨度,并且它是否确实根据行跨度的数量跳过了接下来的 n 行。例如检查第一个 td (A) 并且由于它的行跨度为 2,因此跳过接下来的 2 行并检查 B 是否具有行跨度,如果没有,则添加行跨度为 1 并跳过下一行并继续C,由于 C 的行跨度为 3,因此我们跳过以下 3 行。

4

3 回答 3

0

您可以使用以下脚本实现此目的:

    var rowspan = 0;
    $("table").find("tr").each(function(){
        var row = $(this);
        var firstCell = row.children().first(); // cell containing rowspan
        if (rowspan == 0){ // do not skip, determine new rowspan
            rowspan = firstCell.attr("rowspan"); // read rowspan
            if(!rowspan){ // not found, so add it
                rowspan = row.nextUntil("tr:has(td[rowspan])").length; 
                firstCell.attr("rowspan", rowspan);
            }
        }else{
            rowspan--; // decrease the number of rows to skip
            firstCell.hide(); // skip/hide this cell
        }        
    });

这是一个Fiddle

要改进生成的 html,您实际上必须将每个行跨度增加 1!两行跨度不定义跳过两行,而是跨越两行。这包括定义单元格的行。

于 2013-02-02T22:40:01.870 回答
0

如果你可以在标题 td 上添加一个特殊的类,你可以这样做:

$(document).ready(function(){
    $('td.-main').not('[rowspan]').each(function(){
        $(this).attr('rowspan',2);
    });
});

<table>
<tr><td class="-main" rowspan=2>---A----</td></tr>
<tr><td>Not to this td</td></tr>
<tr><td>Not to this td</td></tr>

<tr><td class="-main">-----B ---ADD here</td></tr>
<tr><td>Not to this td</td></tr>

<tr><td class="-main" rowspan=3>---C---</td></tr>
<tr><td>Not to this td</td></tr>
<tr><td>Not to this td</td></tr>
<tr><td>Not to this td</td></tr>
</table>
于 2013-02-02T22:41:53.703 回答
0

此函数将遍历表行的所有第一个子项,然后检查它是否具有行跨度。如果是,它会跳过下一个 X 行跨度。如果不是,它将行跨度更改为 1。

$("tr td:first-child").each(function() {
  if (i > 0) {
    i--;
    return true;
  }
  if ($(this).attr("rowspan")) {
    i = $(this).attr("rowspan");
    return true;
  } else {
    $(this).attr("rowspan","1");
  }
}
于 2013-02-02T22:44:18.080 回答