2010-05-10 10 views
0

J'essaie d'écrire un peu de jquery qui trouve toutes les balises h2 dans un div (.content), puis les ajoute dans un autre div (.intro).jquery trouver des balises h2 et ajouter dans div

Jusqu'à présent, j'ai ceci:

var h2 = $(".content").find("h2"); 
$(h2).each(function() { 
    $(this).append(".intro"); 
}); 

Mais il ne fonctionne pas .. si quelqu'un pouvait me aider, ce serait génial :)

+0

de toute façon n'est pas clair si vous voulez clone ou tout simplement passer à! –

+1

Une erreur fréquente consiste à utiliser 'each()' quand cela n'est pas nécessaire. Lorsque vous avez un ensemble d'éléments (comme avec vos résultats 'find()'), vous pouvez appeler des fonctions sur l'ensemble en une fois sans avoir à parcourir les éléments et agir sur chacun d'eux individuellement. – user113716

Répondre

3

Essayez ceci:

var h2 = $('h2', '.content'); 
$('.intro').append(h2); 

Pas besoin d'utiliser each(). jQuery a quelque chose appelé "itération implicite" où vous pouvez agir sur l'ensemble entier à la fois. Vous pouvez donc les attraper tous et les ajouter tous en même temps.

Ou vouliez-vous en annexer une copie?

Si oui, essayez:

var h2 = $('h2', '.content'); 
$('.intro').append(h2.clone()); 

EDIT:

Ou utiliser une seule version de ligne:

$('.intro').append($('h2', '.content').clone());​ 

(bien sûr, retirez .clone() si vous ne pas besoin de les copier.)

2

Je pense que vous êtes à la recherche de la appendTo méthode.

var h2 = $(".content").find("h2"); 
$(h2).each(function() { 
    $(this).clone().appendTo($(".intro")); 
}); 

Edit: Il suffit de noter que appendTo se déplaçait les h2 balises, donc Incase qui n'est pas souhaité, a ajouté l'appel à clone().

2

pourrait utiliser des enfants(), quelque chose comme ...

$('.content').children('h2').each(function() { 
    $(this).appendTo($('.intro')); 
});