1

次のテーブル構造があります。

<table>
    <tr>
        <td>ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
    </tr>
    <tr>
        <td>ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
    </tr>
</table>

私がする必要があるのは、「選択可能」のクラスですべてのセルを複製し、それが直前の兄弟であり、クローンを新しい行に挿入することです。言い換えれば、結果を次のようにする必要があります。

<table>
    <tr>
        <td>ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
    </tr>
    <tr>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
    </tr>
    <tr>
        <td>ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
        <td>ASDF</td>
    </tr>
    <tr>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
        <td>ASDF</td>
        <td class="selectable">ASDF</td>
    </tr>
</table>

以下を使用して、「選択可能」のクラスでセルを正常に複製できます。(「TR」タグがないため、これが有効なマークアップではないことはわかっています。例をできるだけ短くしようとしています。)

$('tr').each(function(){
    $(this).after($(this).find('td.selectable').clone());
})

ただし、以前の兄弟をクローンに含める方法もわかりません。

誰かが私を正しい方向に向けることができますか?

ありがとう

4

1 に答える 1

2

を使用prev()して前の兄弟を取得addBack()し、2 つをマージすることができます。新しい行を挿入するには、それを作成し、次を使用してマージされたコレクションを追加しますappend()

$(this).after( $('<tr>').append( $(this).find('td.selectable').prev().addBack().clone() ) );

ここにフィドルがあります

于 2013-10-04T12:11:35.447 に答える