2010-07-28 6 views
11

Comment déplacer un élément HTML vers un autre élément. Notez que je ne parle pas de la position d'un élément en mouvement. Considérez ce code HTML:Comment déplacer un élément HTML

<div id="target"></div> 
<span id="to_be_moved"></span> 

Je veux déplacer « to_be_moved » à « cible » pour « cible » a enfant « to_be_moved » maintenant. Donc, le résultat devrait être comme ceci:

<div id="target"><span id="to_be_moved"></span></div> 

J'ai cherché dans google (en particulier en utilisant le framework prototype), mais tout ce que j'ai est position de déplacement, non pas comme je veux. Merci avant.

Répondre

19
document.getElementById('target').appendChild( document.getElementById('to_be_moved')) 
+0

Qu'en est-il de "to_be_moved"? Est-il toujours à sa place d'origine? – iroel

+0

Ça ne devrait pas l'être. Essayez-le? –

+2

Huh? Le parent de l'élément va changer, donc il est "déplacé". Le noeud n'est pas "supprimé" mais parce qu'il est maintenant ailleurs dans l'arbre DOM. –

0

En supposant que vous travaillez avec des éléments DOM natifs, la méthode Javascript .appendChild répondra à vos besoins.

En Javascript natif, document.getElementByID est probablement votre meilleur pari à obtenir l'élément DOM, alors ...

var target = document.getElementById('target') 
document.getElementById('to_be_moved').appendChild(target) 
6
$("target").insert($("to_be_moved").remove()); 

Ou, pour une façon plus lisible ...

var moveIt = $("to_be_moved").remove(); 
$("target").insert(moveIt); 
+0

J'ai une question. Qu'en est-il de la propriété "to_be_moved", des valeurs, etc.? Est-ce qu'il a toujours la même chose qu'avant le mouvement (comme la méthode DOM native du clone)? – iroel

+0

@iroel Oui, la méthode ['remove'] (http://www.prototypejs.org/api/element/remove) retire l'élément du DOM et le renvoie. Ce n'est pas un clone, c'est * l'élément *. –

+1

Vous n'avez même pas besoin d'utiliser '.remove()'. Vous pouvez simplement insérer à la nouvelle position. – Josh

Questions connexes