Saya ingin memindahkan satu elemen DIV ke dalam elemen yang lain. Misalnya, saya ingin memindahkan ini (termasuk semua anak):
<div id="source">
...
</div>
dalam hal ini:
<div id="destination">
...
</div>
jadi saya punya ini:
<div id="destination">
<div id="source">
...
</div>
</div>
javascript
jquery
html
Mark Richman
sumber
sumber
Jawaban:
Pernah mencoba JavaScript biasa ...
destination.appendChild(source);
?sumber
onclick
cuplikan demo dengan kata kuncivar
dalam upayanya untuk meningkatkan pos - tetapi itu salah!Anda mungkin ingin menggunakan
appendTo
fungsi (yang menambah akhir elemen):Atau Anda bisa menggunakan
prependTo
fungsi (yang menambah awal elemen):Contoh:
Tampilkan cuplikan kode
sumber
it will be moved into the target (not cloned) and a new set consisting of the inserted element is returned
- api.jquery.com/appendtosolusi saya:
PINDAH:
SALINAN:
Perhatikan penggunaan .detach (). Saat menyalin, berhati-hatilah agar Anda tidak menggandakan ID.
sumber
$('#nodeToMove').insertAfter('#insertAfterThisElement');
Saya hanya menggunakan:
Yang saya ambil dari sini .
sumber
Bagaimana dengan solusi JavaScript ?
Coba lihat.
sumber
Jika
div
tempat Anda ingin meletakkan elemen memiliki konten di dalamnya, dan Anda ingin elemen ditampilkan setelah konten utama:Jika di
div
mana Anda ingin meletakkan elemen Anda memiliki konten di dalamnya, dan Anda ingin menampilkan elemen sebelum konten utama:Jika
div
tempat Anda ingin meletakkan elemen Anda kosong, atau Anda ingin menggantinya seluruhnya:Jika Anda ingin menduplikasi elemen sebelum salah satu di atas:
sumber
Kamu bisa menggunakan:
Untuk Menyisipkan Setelah,
Untuk menyisipkan ke dalam elemen lain,
sumber
Jika Anda ingin demo cepat dan detail lebih lanjut tentang cara Anda memindahkan elemen, coba tautan ini:
http://html-tuts.com/move-div-in-another-div-with-jquery
Ini adalah contoh singkat:
Untuk memindahkan DI ATAS elemen:
Untuk memindahkan SETELAH elemen:
Untuk bergerak di dalam suatu elemen, ABOVE SEMUA elemen di dalam wadah itu:
Untuk bergerak di dalam suatu elemen, SETELAH SEMUA elemen di dalam wadah itu:
sumber
Anda dapat menggunakan kode berikut untuk memindahkan sumber ke tujuan
coba kerja codepen
Tampilkan cuplikan kode
sumber
Pertanyaan lama tetapi sampai di sini karena saya perlu memindahkan konten dari satu wadah ke wadah lain termasuk semua pendengar acara .
jQuery tidak memiliki cara untuk melakukannya tetapi fungsi DOM standar appendChild tidak.
Menggunakan appendChild menghapus .source dan menempatkannya ke dalam target termasuk pendengar acara: https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild
sumber
Anda juga dapat mencoba:
Tetapi ini akan sepenuhnya menimpa apa pun yang Anda miliki
#destination
.sumber
Saya perhatikan kebocoran memori yang sangat besar & perbedaan kinerja antara
insertAfter
&after
atauinsertBefore
&before
.. Jika Anda memiliki banyak elemen DOM, atau Anda perlu menggunakanafter()
ataubefore()
di dalam acara MouseMove , memori browser mungkin akan meningkat dan operasi berikutnya akan berjalan sangat lambat.Solusi yang baru saja saya alami adalah menggunakan inserBefore sebagai gantinya
before()
dan masukkanAfter sebagai gantinyaafter()
.sumber
Anda dapat menggunakan JavaScript murni, menggunakan
appendChild()
metode ...Jadi Anda dapat melakukan itu untuk melakukan pekerjaan itu, inilah yang saya buat untuk Anda, menggunakan
appendChild()
, menjalankan dan melihat cara kerjanya untuk kasus Anda:sumber
Demi kelengkapan, ada pendekatan lain
wrap()
atauwrapAll()
disebutkan dalam artikel ini . Jadi pertanyaan OP mungkin dapat diselesaikan dengan ini (yaitu, dengan asumsi<div id="destination" />
belum ada, pendekatan berikut akan membuat pembungkus dari awal - OP tidak jelas tentang apakah pembungkus tersebut sudah ada atau tidak):Kedengarannya menjanjikan. Namun, ketika saya coba lakukan
$("[id^=row]").wrapAll("<fieldset></fieldset>")
pada beberapa struktur bersarang seperti ini:Itu benar membungkus mereka
<div>...</div>
dan<input>...</input>
TETAPI BEBERAPA DAUN DARI<label>...</label>
. Jadi saya akhirnya menggunakan yang eksplisit$("row1").append("#a_predefined_fieldset")
sebagai gantinya. Jadi, YMMV.sumber
perbaikan ukuran kotor jawaban Bekim Bacaj
sumber