web-dev-qa-db-fra.com

jQuery: appendTo parent

Je n'arrive pas à obtenir l'appendice au travail. Qu'est-ce que je fais mal?

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

Marquage actuel:

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

Je veux cette sortie:

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

S'il vous plaît aidez-moi les gars ... Je me déchire les cheveux de chaque minute ..: -S

14
curly_brackets

Ce qui suit devrait suffire:

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

Regardez le travail ici: http://jsfiddle.net/EtxqL/

Vous ne pouvez pas déduire le parent de chaque élément du paramètre 'selector' à appendTo (). La seule façon de faire ce que vous voulez est de parcourir les éléments en les ajoutant tous à leur parent. Découvrez les API dans le lien suivant.

API .appendTo ()

.each API

27
James Wiseman

Est-ce ce que vous recherchez?

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

Il prend simplement le <img> dans chaque conteneur et se déplace en tant que premier enfant du conteneur.

5
David Tang

Vous pouvez utiliser .prepend () au lieu de append Ajouter un insert à la fin du parent. Mais insérer un ajout au début à partir du parent. So alors comme: 

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

J'ai fait un petit exemple et j'espère que vous voulez dire la même chose ...

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