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> 
Rana Imtiaz
sumber
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" />

Mohamed Nuur
sumber
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);

dtsn
sumber
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).

Varun Bhatia
sumber
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

Gibolt
sumber
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>'); });

Chintan7027
sumber
-1

$(".child-div div:first").before("Your div code or some text");

ITU
sumber
tidak ada node
turunan di
-1
$('.parent-div').children(':first').before("<div class='child-div'>some text</div>");
Sayed
sumber
ini akan disisipkan sebelum setiap anak, yaitu Anda akan berakhir dengan memasukkan beberapa node.
Aurovrata