Come inserire l'elemento come primo figlio?


96

Voglio aggiungere un div come primo elemento usando jquery su ogni clic di un pulsante

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

Le risposte a questa domanda funzionano anche con un elenco vuoto di elementi div figlio. Grande!
Roland

Risposte:


164

Prova la $.prepend()funzione.

Utilizzo

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


il problema con questa soluzione è che si inserisce come primo figlio e non prima della lista figli, se il contenitore genitore contiene diversi elementi figli e si vuole inserire prima di uno specifico gruppo di nodi figli, questo non funzionerà.
Aurovrata

All'inizio, non mi era chiaro che questa soluzione funzionasse anche se ci sono zero elementi div figlio. prepend () inserirà nell'elenco vuoto e creerà il primo elemento div figlio. Ovviamente funziona anche append (), ma l'elenco viene creato in un altro ordine.
Roland

18

Estendendo ciò che ha detto @vabhatia, questo è ciò che vuoi in JavaScript nativo (senza JQuery).

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



5
parentNode.insertBefore(newChild, refChild)

Inserisce il nodo newChild come figlio di parentNode prima del nodo figlio esistente refChild. (Restituisce newChild.)

Se refChild è null, newChild viene aggiunto alla fine dell'elenco dei figli. In modo equivalente e più leggibile, usa parentNode.appendChild (newChild).


letteralmente copia e incolla da un altro post. forse fare riferimento alla domanda specifica e come si collega?
roberthuttinger

1
parentElement.prepend(newFirstChild);

Questa è una nuova aggiunta in (probabilmente) ES7. Ora è vanilla JS, probabilmente a causa della popolarità in jQuery. È attualmente disponibile in Chrome, FF e Opera. Transpilers dovrebbe essere in grado di gestirlo fino a quando non sarà disponibile ovunque.

PS È possibile anteporre direttamente le stringhe

parentElement.prepend('This text!');

Collegamenti: developer.mozilla.org - Polyfill


0

Obbligatorio qui

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

aggiunto da

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


-1

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


non ci sono nodi figli sotto child-div
Aurovrata

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

questo inserirà prima di ogni figlio, cioè finirai per inserire più nodi.
Aurovrata
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.