İlk çocuk olarak eleman nasıl eklenir?


97

Bir düğmenin her tıklamasında jquery kullanarak ilk öğe olarak bir div eklemek istiyorum

<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> 

Bu sorunun yanıtları, boş bir child-div öğeleri listesiyle de çalışır. Harika!
Roland

Yanıtlar:


165

$.prepend()İşlevi deneyin .

Kullanım

$("#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" />


Bu çözümle ilgili sorun, ana kapsayıcı farklı alt öğeler içeriyorsa ve belirli bir alt düğüm grubunun önüne eklemek istiyorsa, alt öğe listesinden önce değil, ilk alt öğe olarak eklemesidir.
Aurovrata

İlk başta, bu çözümün, sıfır child-div öğesi varsa da işe yarayacağı bana açık değildi. prepend () boş listeye eklenir ve ilk alt div öğesini oluşturur. Elbette, append () da çalışır, ancak liste başka bir sırada oluşturulur.
Roland

18

@Vabhatia'nın söylediğine göre, yerel JavaScript'te (JQuery olmadan) istediğiniz şey budur.

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



5
parentNode.insertBefore(newChild, refChild)

NewChild düğümünü, refChild varolan alt düğümünden önce parentNode alt öğesi olarak ekler. (NewChild döndürür.)

RefChild null ise, newChild alt listenin sonuna eklenir. Eşit ve daha okunaklı bir şekilde parentNode.appendChild (newChild) kullanın.


tam anlamıyla başka bir gönderiden kopyalayıp yapıştırın. belki belirli bir soruya ve bunun nasıl bağlantılı olduğuna atıfta bulunabilir?
roberthuttinger

1
parentElement.prepend(newFirstChild);

Bu, (muhtemelen) ES7'de yeni bir eklentidir. Şimdi, muhtemelen jQuery'deki popülerliğinden dolayı vanilya JS'dir. Şu anda Chrome, FF ve Opera'da mevcuttur. Transpilers, her yerde mevcut olana kadar onu kullanabilmelidir.

PS Dizelerin başına doğrudan ekleyebilirsiniz

parentElement.prepend('This text!');

Bağlantılar: developer.mozilla.org - Polyfill


0

Burada gerekli

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

tarafından eklendi

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


-1

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


child-div'in altında çocuk düğümleri yok
Aurovrata

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

bu her çocuktan önce eklenecektir , yani birden çok düğüm ekleyeceksiniz.
Aurovrata
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.