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
        }        
    });

そして、ここにフィドルがあります。

結果のhtmlを改善するには、実際には各行スパンを1つ増やす必要があります。2つの行スパンは、2つの行をスキップすることを定義するのではなく、2つの行にまたがることを定義します。これには、セルが定義されている行が含まれます。

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