Bagaimana cara memasukkan elemen sebagai anak pertama?


96

Saya ingin menambahkan div sebagai elemen pertama menggunakan jquery pada setiap klik tombol

<div id='parent-div'>
    <!--insert element as a first child here ...-->

    <div class='child-div'>some text</div>
    <div class='child-div'>some text</div>
    <div class='child-div'>some text</div>

</div> 

Jawaban atas pertanyaan ini juga berfungsi dengan daftar kosong elemen div turunan. Bagus!
Roland

Jawaban:


164

Coba $.prepend()fungsinya.

Pemakaian

$("#parent-div").prepend("<div class='child-div'>some text</div>");

Demo

var i = 0;
$(document).ready(function () {
    $('.add').on('click', function (event) {
        var html = "<div class='child-div'>some text " + i++ + "</div>";
        $("#parent-div").prepend(html);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="parent-div">
    <div>Hello World</div>
</div>
<input type="button" value="add" class="add" />


Masalah dengan solusi ini adalah ia menyisipkan sebagai anak pertama dan bukan sebelum daftar anak, jika wadah induk berisi elemen anak yang berbeda dan seseorang ingin menyisipkan sebelum kelompok tertentu dari simpul anak, ini tidak akan berhasil.
Aurovrata

Pada awalnya, tidak jelas bagi saya bahwa solusi ini juga berfungsi jika tidak ada elemen div turunan. prepend () akan dimasukkan ke dalam daftar kosong dan membuat elemen div anak pertama. Tentu saja, append () juga berfungsi, tetapi daftar dibuat dengan urutan lain.
Roland

18

Memperluas apa yang dikatakan @vabhatia, inilah yang Anda inginkan dalam JavaScript asli (tanpa JQuery).

ParentNode.insertBefore(<your element>, ParentNode.firstChild);



5
parentNode.insertBefore(newChild, refChild)

Menyisipkan node newChild sebagai anak dari parentNode sebelum node anak refChild yang ada. (Mengembalikan anak baru.)

Jika refChild adalah null, newChild ditambahkan di akhir daftar anak. Secara setara, dan lebih mudah dibaca, gunakan parentNode.appendChild (newChild).


benar-benar disalin dan ditempel dari kiriman lain. mungkin memberikan referensi untuk pertanyaan spesifik dan bagaimana kaitannya?
roberthuttinger

1
parentElement.prepend(newFirstChild);

Ini adalah tambahan baru di (kemungkinan) ES7. Sekarang vanilla JS, mungkin karena popularitas di jQuery. Saat ini tersedia di Chrome, FF, dan Opera. Transpiler harus dapat menangani sampai tersedia di mana-mana.

PS Anda dapat langsung menambahkan string

parentElement.prepend('This text!');

Tautan: developer.mozilla.org - Polyfill


0

Diperlukan di sini

<div class="outer">Outer Text <div class="inner"> Inner Text</div> </div>

ditambahkan oleh

$(document).ready(function(){ $('.inner').prepend('<div class="middle">New Text Middle</div>'); });



-1
$('.parent-div').children(':first').before("<div class='child-div'>some text</div>");

ini akan disisipkan sebelum setiap anak, yaitu Anda akan berakhir dengan memasukkan beberapa node.
Aurovrata
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.