2012-07-05 15 views
5

que tienen la siguiente estructura:JavaScript conseguir elemento padre y escribir div soporte para los hermanos

<div class="parent"> 
    <div id="child1">Content here</div> 
    <div class="child2">Content here</div> 
</div> 

En proceso de carga, quiero incluir un "titular" div, que contiene todos los hijos del padre de este modo:

<div class="parent"> 
    <div id="holder"> 
    <div id="child1">Content here</div> 
    <div class="child2">Content here</div> 
    </div> 
</div> 

Conociendo solo la identificación "child1", ¿cómo puedo agregar un div titular sobre sí mismo y sus hermanos?

Consideraciones

  • El "child1" id es el único identificador conocida.
  • La clase "principal" y "child2" son nombres dinámicos y cambiarán, por lo que no se pueden usar como identificadores.
  • tiene que ser vainilla JavaScript.

¿Pensamientos?

+0

¿su pregunta originalmente tienen una etiqueta de jQuery y no dicen "JavaScript básico"? Solo me pregunto porque obtuviste tantas respuestas de jQuery (¡incluidas por mí) y estoy seguro de que mencionó a jQuery en algún momento cuando respondí! –

+2

Lo siento James, no mencioné a JQuery. (Mi publicación no se ha editado desde entonces) –

Respuesta

18

En vista de que esto tiene que ser JavaScript (y no jQuery) y sólo se puede indentify niño1 por id se podría hacer algo tan crudo como este:

var child1 = document.getElementById("child1"), 
    parent = child1.parentNode, 
    contents = parent.innerHTML ; 
    parent.innerHTML = '<div id="holder">' + contents + '</div>'; 

Espero que esto ayude ...

+3

+1 por ser el único en darse cuenta de que "debe ser JavaScript vainilla". Estoy seguro de que ese punto no estaba allí cuando se hizo la pregunta por primera vez ... –

+0

Que alguien ha eliminado :( –

+0

Sí, .innerHTML es crudo –

1

dijo que no jQuery, esto suena como una tarea, sino:

var el = document.getElementById('child1'); 
var parent = el.parentNode; 
parent.innerHTML = '<div id="holder">' + parent.innerHTML + '</div>'; 
Cuestiones relacionadas