1

さて、私は3つのdivを持っています...

<div id="video"></div>
<div id="info"></div>
<div id="chat"></div>

ボタンを押すだけでdivを移動するためにjQueryを使用しています。

$('#chat').insertBefore('#video');

これには問題があります。この関数が行うことは、divを複製/複製し、chatdivの前に挿入してからvideo、元のdivを破棄することだと思いますchatchatただし、明らかに、 div にはチャットルームが含まれているため、これはうまく機能しません。

そのため、クローン作成と破棄によって新しいチャット要素が読み込まれます。これは多くのリソースを消費するだけでなく、別のインスタンスであるため、ユーザーはチャットルームにログインし直す必要があります。

非破壊的な方法で div を移動する方法はありますか? 複製と破壊なしで?divを物理的に移動する何らかの方法はありますか?

4

4 に答える 4

1

ネイティブを試すことができますinsertBefore

var video = document.getElementById('video'),
    chat  = document.getElementById('chat');

video.parentNode.insertBefore(chat, video);

完璧な世界では、jQuery メソッドはこのように機能するはずです。しかし、f.exに複数のターゲットがあり、jQueryが「いい」場合は、この方法で状況を明らかにすることができます...

于 2013-07-17T23:06:19.427 に答える
0

jQueryサイトのドキュメントinsertBeforeには、次のように記載されています。

この方法で選択された要素 が DOM の別の場所に挿入された場合、その要素はターゲットの前に移動され (複製されず) 、挿入された要素で構成される新しいセットが返されます。

上記のステートメントは、あなたの状況に適用されます。したがって、あなたdivは破壊されたりクローン化されたりしません。

ただし、ターゲット要素が複数ある場合は、挿入された要素のクローン コピーが最初のターゲットの後にターゲットごとに作成され、その新しいセット (元の要素とクローン) が返されます。

要素が多くのターゲットの前に挿入された場合、複製されます。

于 2013-07-17T22:59:39.110 に答える
0

この問題を別の方法で解決しました。コンテンツをリロードせずに DOM のある場所から別の場所に iFRAME を移動することは不可能であることを人々が確認したため...

DOM で div を移動する代わりに、そのままの場所に残し、一番上に配置したい div に「position: absolute」を適用して、強制的に一番上に配置しました。

于 2013-07-18T06:02:15.660 に答える