2011-08-25 8 views
27

¿Puedo cortar (completamente, con todos los estilos y atributos) un elemento de una ubicación y pegarlo en otra ubicación (como body) con jQuery?corte completamente y pegue un elemento

Además, quiero colocar una cadena (o etiqueta) en la ubicación anterior, porque quiero cambiar su lugar a una ubicación anterior al final de la secuencia de comandos.

¿Lo puedo? ¿Cómo?

Gracias.

+0

nunca he oído hablar de algo como esto, pero tal vez crear un controlador de eventos para un comando de copia, (un montón de ejemplos en Google, a continuación, sólo quitar el código HTML interno, que tendrá que guardar el código HTML interno lugar en primer lugar, antes de pegarlo. Tal vez en xml u otros métodos. Puede ser que el objeto solo pueda cortarse cuando ya se haya elegido un engrudo, entonces podrías hacerlo todo en una función. No pienses que es imposible pensar, aquí está la forma de detectar eventos de copiar y pegar http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/ –

+0

Nota: Solución elegante para intercambiar 2 elementos vecinos: http://stackoverflow.com/a/8638127/669677 –

Respuesta

33

appendTo() moverá automáticamente los elementos coincidentes de Ubique su ubicación actual en el contenedor especificado, que parece ser lo que desea.

Puede utilizar after() para insertar nuevo contenido antes de mover el elemento:

$("#yourElement").after("<p>Element was there</p>").appendTo("body"); 
+0

+1 pero si el CSS se aplica así a '.someContainer #yourElement {color: blue; } 'sacarlo del contenedor" arruinará "el estilo. Entonces podría ser más complicado. –

+0

Gracias. Estaba usando 'appendTo()' pero no sabía que movería elementos. – mrdaliri

+0

Shadow Wizard dijo, ¿tiene jQuery una función para esto? – mrdaliri

7

puede hacerlo por el clon primera copia a otra ubicación

$('#yourElement').clone().appendTo('#anotherDiv'); 

luego retire uno de edad,

$('#parentOfOldElement #yourElement').remove(); 

o se puede reemplazar a llegar más tarde

$('#parentOfOldElement #yourElement').replaceWith('<div id="toReplaceAgain">/div>'); 
+0

Gracias. Soy novato en jQuery, y no escuché acerca de 'remove()' – mrdaliri

+7

'.detach()' se podría usar en su lugar de 'clone()' y 'remove()' –

10

.detach() es más apropiado para esta tarea, como se sugirió @lvan.

jQuery(jQuery("#yourElement").detach()).appendTo("body"); 
Cuestiones relacionadas