2011-01-13 19 views
13

Ich kann nicht scheinen, um das appendTo zu arbeiten. Was mache ich falsch?jQuery: appendTo Eltern

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

Aktuelle Markup:

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

Ich möchte diese Ausgabe:

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

Bitte helfen Sie mir Jungs ... Ich bin reißen meine Haare jede Minute ..: -S

Antwort

26

Die folgende genügen sollte:

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

es Siehe, hier zu arbeiten: http://jsfiddle.net/EtxqL/

Sie können jedes Element des übergeordneten aus dem 'Selektor' Parameter auf appendTo() nicht geschlossen werden. Die einzige Möglichkeit, das zu tun, was Sie möchten, besteht darin, die Elemente durchzulaufen und sie jeweils an ihre übergeordneten Elemente anzuhängen. Sehen Sie sich die APIs im folgenden Link an.

.appendTo() API

.each API

+0

Dank James ... :-) –

4

Sind Sie auf der Suche?

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

Es dauert einfach die <img> in jedem Behälter und bewegt sich als erstes Kind des Behälters.

2

können Sie .prepend() statt append verwenden anhängen am Ende einfügen eine der Elternteil aus. Aber fügen Sie am Anfang am Anfang einfügen. so ist, dann mag:

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

ich ein little example gemacht und ich hoffe, dass Sie das gleiche bedeuten ...

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