JQuery: приложение к родителю - PullRequest
14 голосов
/ 13 января 2011

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

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

Ответы [ 4 ]

27 голосов
/ 13 января 2011

Должно быть достаточно:

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

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

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

.appendTo () API

.each API

5 голосов
/ 13 января 2011

Это то, что вы ищете?

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

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

2 голосов
/ 13 января 2011

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

$('.container > p').each(function () {
    $(parent).prepend(this);
});
0 голосов
/ 13 января 2011

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

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