Question

J'écris un script qui doit déplacer un élément de noeud enveloppant sur la page. Je trouve que lorsque je fais cela, je retire les enfants précédemment emballés. Comment désannuler les enfants d'un nœud afin de pouvoir déplacer ce nœud parent ailleurs?

Je pensais à quelque chose comme ça:

  var parg = document.getElementById("blah");

  if (parg.hasChildNodes())
   {
     var children = parg.childNodes;
     while (children.length > 0)
     {
      parg.insertBefore(parg.firstChild);
      parg.removeChild(parg.firstChild);
     };
   };

La ligne dont je devine le problème est le "insertBefore". logique.

Était-ce utile?

La solution

insertBefore opère sur un nœud d'élément et prend deux arguments, le nouveau noeud, et le noeud que le nouveau noeud précédera.

function unwrap(who){
 var pa= who.parentNode;
 while(who.firstChild){
  pa.insertBefore(who.firstChild, who);
 }
}

// test

unwrap (document.getElementById ("blah"));

 entrez la description de l'image ici

Autres conseils

Vous aurez besoin de parcourir vos enfants de premier niveau et d'assigner leur parent au "wrapper". le parent de l'élément.

Quelque chose comme ça, peut-être:

if ( parg.hasChildNodes() ) {
     var children = parg.childNodes;

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top