2012-02-08 18 views
6

Come posso clonare un DIV, aggiungerlo subito dopo il div e dargli un nuovo identificatore?jQuery .clone .insertAfter con un nuovo ID

Ho un div con una classe reflection, voglio ogni istanza di questo DIV, clonato, e inserito subito dopo l'originale, ma con la classe reflected (senza la classe, reflection) Come posso fare questo con jQuery?

Ecco mio violino attuale, ma non funziona bene ... http://jsfiddle.net/yUgn9/

+0

@rusty, dove è andata la tua risposta, era corretta? – henryaaron

risposta

9

passare una funzione per .after(), e lo hanno restituire il clone aggiornato.

$('div.reflection').after(function() { 
    return $(this).clone().toggleClass('reflection reflected'); 
}); 

DEMO:http://jsfiddle.net/PFBVX/


Nelle vecchie versioni di jQuery, fare questo ...

$('div.reflection').each(function() { 
    $(this).after($(this).clone().toggleClass('reflection reflected')); 
}); 

DEMO:http://jsfiddle.net/PFBVX/1/

+0

Spiacente ... non funziona con 1.4.2 – henryaaron

+0

@ user1090389: Allora dovresti fare la stessa cosa, ma con '.each()'. Aggiornerò –

+2

Dio adoro StackOverflow! Una ricerca, primo risultato! Grazie! – NaturalBornCamper

2

credo sarà necessario .Ogni() di loro di gestire singolarmente. Quello che sta facendo il codice è catturarli tutti e clonarli dopo tutti loro. Invece, si desidera gestire ciascuno di essi individualmente e inserire il clone dopo l'originale, dopo aver modificato le classi nel modo desiderato.

$(document).ready(function(){ 

    $('div.reflection').each(function() { 
     var org = $(this), 
      clone = org.clone(); 

     clone.removeClass('reflection').addClass('reflected') 
      .insertAfter(org); 
    }); 

}); 
Problemi correlati