2011-01-13 7 views
13

Nie mogę dostać appendTo do pracy. Co mam zrobić źle?jQuery: appendTo rodzic

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

Aktualny markup:

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

chcę tego wyjścia:

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

Proszę mi pomóc faceci ... Jestem z rozrywaniem włosy każdej chwili ..: -S

Odpowiedz

26

Poniższa powinno wystarczyć:

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

Zobacz pracuje tutaj: http://jsfiddle.net/EtxqL/

nie można wywnioskować z rodziców każdego elementu z parametru '' do wyboru appendTo(). Jedynym sposobem zrobienia tego, co chcesz, jest zapętlenie elementów, dołączanie każdego do rodzica. Sprawdź interfejsy API w poniższym linku.

.appendTo() API

.each API

+0

Dzięki James ... :-) –

4

Czy tego właśnie szukasz?

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

To po prostu bierze <img> w każdym pojemniku i ruchów jak pierwsze dziecko pojemnika.

2

Można użyć .prepend() zamiast append Dołącz wstawić na koniec off A macierzystej. Ale wstawiaj wstawkę na początku od rodzica. tak jak wtedy:

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

zrobiłem little example i mam nadzieję, że oznacza to samo ...

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