jQuery: добавить к родителю

Кажется, я не могу заставить работать appendTo. Что я делаю неправильно?

$('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


person curly_brackets    schedule 13.01.2011    source источник


Ответы (4)


Должно хватить следующего:

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

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

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

.appendTo() API

.каждый API

person James Wiseman    schedule 13.01.2011

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

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

Он просто берет <img> внутри каждого контейнера и перемещает его как первый дочерний элемент контейнера.

person David Tang    schedule 13.01.2011

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

$('.container > p').each(function () {
    $(parent).prepend(this);
});
person Yoram de Langen    schedule 13.01.2011

Я сделал небольшой пример и надеюсь, что вы имеете в виду то же самое...

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