0

テーブルのこのn番目の行が与えられた場合、jqueryはマークアップのみを追加してテーブルを閉じることができますか?

        <tr class="eop">
            <td> 8/31 </td>
            <td> XYZ </td>
            <td> 2 </td>
            <td> 92.00 </td>
        </tr>

   </tbody>            --
</table>                 |
<table>                  --     //  inserted markup
   head jquery var       |
   <tbody>             --

私が試しているのは、以下を使用することです。

$('tr.eop').append("</tbody></table><table>+head+<tbody>");   // head = table header
4

3 に答える 3

3

DOMは要素ノードで構成され、要素がDOMまたはDOMフラグメントの一部になると、開始タグと終了タグは何の意味もありません。

終了タグのない要素をページに添付することはできません。終了タグを省略すると、作成されます。また、終了タグを子として追加して親要素を閉じることはできません。代わりに、親要素内に新しい完全な要素を作成するだけです。

新しいテーブルを作成する場合は、新しいテーブルを作成します。

var newTable = $("<table><thead>"+head+"</thead><tbody></tbody></table>");
$('tr.eop').closest("table").after(newTable)
$('tr.eop').nextAll().appendTo(newTable.find("tbody"));
于 2013-02-06T19:24:55.880 に答える
0

これを試してみてください。それが機能するかどうかを確認します。

var tt = $('tr.eop');
tt.innerHTML = tt.innerHTML + '</tbody></table><table>'+head+'<tbody>';
于 2013-02-06T18:53:06.037 に答える
0

良い習慣ではない場合でも、それは機能します(ある時点で失敗する可能性があるかどうかはわかりません)。この例を見てください。

http://jsfiddle.net/MKSqy/

ただし、何を達成しようとしているのかわかりません。DOMツリーを操作することで、同様のことを簡単に行うことができます。または、テーブルを使用する代わりに、アプリの構築方法を変更して、divを使用し、必要に応じて非表示または表示されるものを作成します。

<div class="table">
    <div class="row">
        <div>8/31</div>
        <div> XYZ </div>
        <div> 2 </div>
        <div> 92.00 </div>
    </div>
    <div class="head" style="visible:none;"></div>
</div>

cssを操作してテーブルスタイルを作成します。念のためこれをお勧めしますが、テーブルタグは理由のために存在するため、 divを悪用しないでください。

編集:私はよく理解していなかったので、これはあなたが必要なものです

http://jsfiddle.net/MKSqy/1/

これは基本的に、n番目の要素の次の要素を選択してテーブルを作成し、前のテーブルのすぐ隣に追加します。したがって、closeタグを処理する必要はありません。

于 2013-02-06T18:54:08.127 に答える