0

JQuery では、セレクターによって返されるほとんどすべてのオブジェクトをキャッシュできます。私の場合、<tr>選択した要素 (<tbody>テーブル内) の子 (複数可) を という変数にキャッシュしますrows

rows次に、個々の行を操作するthis で JQuery メソッドを呼び出します。たとえば、合計で 5 行あり、最初の行と最後の行を入れ替えたい場合:

rows.eq(4).after(row1);
rows.eq(0).before(row5);

ただし、これは機能しません。最初の行は一番下に到達しますが、一番下の行は一番上に到達しません。

それが機能するのは、各操作で子の新しいコピーを取得することです。比較については、http: //jsfiddle.net/QNS5G/を参照してください。

ここでキャッシュされたアプローチの問題を引き起こしているのは何ですか?

4

3 に答える 3

2

DOM で行の順序を変更しても、jQuery オブジェクトの順序は変更されません。

そのt1_rows.eq(4).after(t1_row1);ため、最初の行を一番下に移動します (行 1 はjQuery オブジェクトの 5 行目の後に移動します)。次にt1_rows.eq(0).before(t1_row5);、最後の行を行 1 のに配置しようとします。既にそこにあるため、変更は表示されません。

おそらくあなたはの後のel.after(something)場所を考えていますが、それは逆で、実際には の後に配置されます。elsomethingsomethingel

于 2013-10-17T19:53:06.437 に答える
1

あなたのコードを英語に翻訳させてください。

  1. まず、行 1 を取得し、行 5 の後に挿入します。
  2. 次に、行 5 を取得し、行 1 の前に挿入します

行 1 がリストの一番下に移動したため、2 番目の操作は何もしません。すでにrow5の直前です。

于 2013-10-17T19:53:35.827 に答える