2011-01-13 18 views
13

Parece que no puedo hacer funcionar el appendTo. ¿Qué hago mal?jQuery: appendTo parent

$('div:nth-child(2n) img').appendTo(parent); 

marcado actual:

<div class="container"> 
    <img src="123.jpg" /> 
    <p>Hey</p> 
</div> 
<div class="container"> 
    <img src="123.jpg" /> 
    <p>Hey</p> 
</div> 

Quiero esta salida:

<div class="container"> 
    <p>Hey</p> 
    <img src="123.jpg" /> 
</div> 
<div class="container"> 
    <p>Hey</p> 
    <img src="123.jpg" /> 
</div> 

Por favor, ayúdame chicos ... estoy rasgando mi pelo de cada minuto ..: -S

Respuesta

26

El siguiente debería ser suficiente:

$("div>img").each(function(){ 
    $(this).appendTo($(this).parent()); 
}); 

ver su funcionamiento aquí: http://jsfiddle.net/EtxqL/

Usted no puede deducir los padres de cada elemento de la parámetro 'selector' a appendTo(). La única forma de hacer lo que desea es recorrer los elementos, añadiendo cada uno a su elemento principal. Consulte las API en el siguiente enlace.

.appendTo() API

.each API

+0

Gracias James ... :-) –

4

¿Es esto lo que buscas?

$('.container > img').each(function() { 
    $(this).parent().append(this); 
}); 

simplemente toma el <img> dentro de cada recipiente y se mueve como el primer hijo del contenedor.

2

Se puede utilizar en lugar de .prepend() append Anexar insertar al final de un padre. Pero anteponga el inserto al principio del padre. así entonces como:

$('.container > p').each(function() { 
    $(parent).prepend(this); 
}); 
0

hice un little example y espero que signifiquen lo mismo ...

$(document).ready(function() { 
    $('.container > img').each(function() { 
     $(this).parent().append(this); 
    }); 
}); 
Cuestiones relacionadas