2

私はテーブルを持っています

<table>
<tr><td>9:00</td><td id='ts9'>task1</td></tr>
<tr><td>10:00</td><td id='ts10'></td></tr>
<tr><td>11:00</td><td id='ts11'>task2</td></tr>
<tr><td>12:00</td><td id='ts12'>task3</td></tr>
</table>

そのタスクには2時間かかるため、ID 10と11のセルを1つにマージする必要があります。jQueryを使用しています。

私は考えました:

$("#ts9").attr('colSpan', 2);

しかし、それはうまくいきません。

4

3 に答える 3

4

jQueryを使用する必要がある場合、これは機能します:

$('#ts10')
    .text($('#ts11').text())
    .attr('rowspan','2')
    .closest('tbody')
    .find('#ts11')
    .remove();​

JS フィドルのデモ

または、もう少し簡潔に:

$('#ts10')
    .text($('#ts11').remove().text())
    .attr('rowspan','2');​

JS フィドルのデモ

そして、もう少し...便利なアプローチで、隣接する行のセルを of とマージしclassますtwo:

$('tr td.two').each(
    function(){
        var that = $(this),
            next = that.parent().next().find('.two');
        if (next.length){
            that
                .text(next.remove().text())
                .attr('rowspan','2');
        }
    });

JS フィドルのデモ

于 2012-04-18T22:59:13.717 に答える
2

これは私にとってはうまくいきます。同じテキストのセルをマージします: ロジック: 各セルについて、次のセルが同じテキストの場合、次のセルを削除し、colSpan をインクリメントします。(「colspan」ではなく「colSpan」に注意してください-明らかにブラウザの互換性の問題です)

$('#tblData tbody tr:first-child td').each(function(){
 var colSpan=1;
 while( $(this).text() == $(this).next().text() ){
  $(this).next().remove();
  colSpan++;
 }
$(this).attr('colSpan',colSpan);
});
于 2012-07-31T21:11:55.417 に答える
0

実際には、行スパンを ds10 に追加てから、ここで 2 行目から ts11を削除する必要があります。コードを colspan から rowspan に変更し、次を追加します

$("#ts11").remove();

必要な結果が得られるはずです。しかし、私は個人的にjqueryを介してrowspan/colspan属性を変更しようとはしませんでした。うまく機能すると仮定しています。それが役に立てば幸い。

追伸: 数字を修正しました。最初に 9 と 10 をマージする必要があると思いました :)

于 2012-04-18T22:57:25.667 に答える