2012-01-03 12 views
36

enter image description herejquery clone div e aggiungerla dopo specifica div

Ciao ragazzi, dalla foto sopra, voglio clonare il div con ID # car2 e aggiungerla dopo l'ultimo div con id iniziare con auto, in questo esempio id # car5. Come posso farlo? Grazie.

Questo è il mio codice try:

$("div[id^='car']:last").after('put the clone div here'); 

risposta

104

È possibile utilizzare clone, e quindi dal momento che ogni div ha una classe di car_well è possibile utilizzare InsertAfter per inserire dopo il ultimo div.

$("#car2").clone().insertAfter("div.car_well:last"); 
+0

I sto cercando di usare lo stesso per aggiungere più allegati a un modulo. Puoi spiegare come rimuovere questo div con una funzione neutra (quindi in pratica avrei 1 funzione per aggiungere div e un'altra per rimuovere l'ultimo div) –

+0

Funziona bene, ma html() con una funzione anonima è potenzialmente più potente , a seconda dell'applicazione. https://stackoverflow.com/questions/8707756/jquery-clone-div-and-append-it-after-specific-div#answer-47063071 – plaidcorp

8

provare questo

$("div[id^='car']:last").after($('#car2').clone()); 
+0

mi piace - http : //jsfiddle.net/VgwKt/ – mrtsherman

+0

E come faccio ad aumentare il numero di identificazione per l'auto 6 dopo il clone? – Mikeys4u

+0

@ Mikeys4u non ero sicuro della parte superiore della mia testa, ho trovato questo thread sullo stesso argomento http://stackoverflow.com/questions/10126395/how-to-jquery-clone-and-change-id – mcgrailm

0

Questo funziona perfettamente se una copia è in ordine. Se la situazione lo richiede la creazione di nuovi oggetti da modelli, di solito avvolgere il div modello in un div stoccaggio nascosto e usare l'HTML di jQuery() in combinazione con clone() applicando la seguente tecnica:

<style> 
#element-storage { 
    display: none; 
    top: 0; 
    right: 0; 
    position: fixed; 
    width: 0; 
    height: 0; 
} 
</style> 

<script> 
$("#new-div").append($("#template").clone().html(function(index, oldHTML){ 
    // .. code to modify template, e.g. below: 
    var newHTML = ""; 
    newHTML = oldHTML.replace("[firstname]", "Tom"); 
    newHTML = newHTML.replace("[lastname]", "Smith"); 
    // newHTML = newHTML.replace(/[Example Replace String]/g, "Replacement"); // regex for global replace 
    return newHTML; 
})); 
</script> 

<div id="element-storage"> 
    <div id="template"> 
    <p>Hello [firstname] [lastname]</p> 
    </div> 
</div> 

<div id="new-div"> 

</div>