2010-12-13 6 views
37

Ma structure HTML est comme ceci:Comment déplacer un élément HTML dans jQuery?

<div id="parent"> 
    <div id="1">Some content</div> 
    <div id="2">Some content</div> 
</div> 

Je veux déplacer l'élément id="2" à placer avant id="1" si sa sera comme ceci:

<div id="parent"> 
    <div id="2">Some content</div> 
    <div id="1">Some content</div> 
</div> 

Comment dois-je faire quelque chose comme ça dans jQuery ?

+1

@rahul - ils sont invalides * en HTML4 *, être clair à ce sujet, compte tenu des changements ces derniers temps;) –

+2

@rahul: ID est juste seulement par exemple :), le vrai script bien sûr que non. – GusDeCooL

Répondre

66

Vous pouvez utiliser .insertBefore(), comme ceci:

$("#2").insertBefore("#1"); 

Ou, .prependTo(), comme ceci:

$("#2").prependTo("#parent"); 

... ou l'inverse en utilisant #1 et .insertAfter() et .appendTo() ... ou plusieurs D'autres façons en fait, cela dépend de ce que vous êtes réellement après, les 2 méthodes ci-dessus devraient être sur le plus court possible, compte tenu de 2 ID.

Je suis en supposant ceci est juste un exemple, n'oubliez pas d'utiliser les ID qui ne commencent pas par un nombre dans une page HTML4 réelle, ils sont invalides et causent plusieurs problèmes.

+0

merci de comprendre si ID juste par exemple, et aussi votre code '$ (" # 2 "). InsertBefore (" # 1 ");' est en train de vider mon problème ... merci beaucoup :) – GusDeCooL

7

simplement:

$('#1').before($('#2')); 
+1

pourquoi le '$ ('# 2')' au lieu de simplement ''# 2' '? –

+1

@FranciscoCorralesMorales Car, la méthode ['before'] (http://api.jquery.com/before/) attend, en paramètre, une chaîne HTML ou un élément DOM ou un tableau d'éléments ou un objet jQuery. "# 2" n'est pas l'un de ceux-là. – TheWanderingMind

Questions connexes