2011-01-13 2 views
13

Я не могу заставить appendTo работать. Что я делаю неправильно?jQuery: appendTo parent

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

Текущая разметка:

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

Я хочу, чтобы этот вывод:

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

Пожалуйста, помогите мне, ребята ... Я разрываю мои волосы каждой минуты ..: -S

ответ

26

Следующая должно хватить:

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

Посмотри здесь работает: http://jsfiddle.net/EtxqL/

Вы не можете вывести родителя каждого элемента из параметра 'селектор' в appendTo(). Единственный способ сделать то, что вы хотите, - это перебрать элементы, добавив их к родительскому. Ознакомьтесь с API в следующей ссылке.

.appendTo() API

.each API

+0

Спасибо Джеймс ... :-) –

4

Это то, что вам нужно?

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

Он просто берет <img> внутри каждого контейнера и движется, как первый ребенок контейнера.

2

Вы можете использовать .prepend() вместо Append Append вставить в конце выходной родителя. Но добавьте вставку в начале от родителя. так, то нравится:

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

Я сделал little example, и я надеюсь, что вы имеете в виду то же самое ...

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