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.