2012-02-08 10 views
6

¿Cómo puedo clonar un DIV, anexarlo justo después del div y darle un nuevo identificador?jQuery .clone .insertDespués con un nuevo ID

tengo un div con una clase reflection, quiero que cada instancia de este DIV, clonado, y se inserta inmediatamente después de la original, pero con la clase reflected (sin la clase, reflection) ¿Cómo puedo lograr esto con jQuery?

Aquí es mi violín actual, pero no funciona bien ... http://jsfiddle.net/yUgn9/

+0

@rusty, ¿a dónde fue su respuesta, fue correcta? – henryaaron

Respuesta

9

pasar una función a .after(), y tienen que devolver el clon actualizada.

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

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


En las versiones anteriores de jQuery, hacer esto ...

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

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

+0

Lo sentimos ... no funciona con 1.4.2 – henryaaron

+0

@ user1090389: Entonces harías lo mismo, pero con '.each()'. Voy a actualizar. –

+2

¡Dios, amo StackOverflow! Una búsqueda, primer resultado! ¡Gracias! – NaturalBornCamper

2

Creo que necesita para .Cada() de que manejen de forma individual. Lo que el código está haciendo actualmente es agarrarlos a todos y clonarlos después de todos ellos. En su lugar, desea manejar cada uno de ellos individualmente e insertar el clon después del original, después de cambiar las clases como desee.

$(document).ready(function(){ 

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

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

});