2012-07-05 5 views
5

ho la seguente struttura:ottenere JavaScript elemento padre e scrivere div supporto per i fratelli

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

A onload, voglio includere un "titolare" div, che contiene tutti i bambini del genitore questo modo:

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

Conoscendo solo l'ID "child1", come posso aggiungere un div del titolare attorno a sé e ai fratelli?

Considerazioni

  • Il "child1" id è l'unico identificatore conosciuto.
  • La classe "padre" e "figlio2" sono nomi dinamici e cambieranno, quindi non possono essere utilizzati come identificativi.
  • deve essere JavaScript vaniglia.

Pensieri?

+0

nata la tua domanda ha origine un tag jQuery e non dire "vanilla JavaScript"? Mi chiedo solo perché hai ricevuto così tante risposte jQuery (da me incluse) e sono sicuro che menzionava jQuery da qualche parte nel momento in cui ho risposto! –

+2

Scusa James, non ho menzionato JQuery. (Il mio post non è stato modificato da) –

risposta

18

Visto che questo deve essere JavaScript (e non jQuery) e si può identificare solo il child1 da id si potrebbe fare qualcosa di grezzo come questo:

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

Spero che questo aiuti ...

+3

+1 per essere l'unico a notare "deve essere JavaScript vaniglia"! Sono sicuro che il punto non era lì quando la domanda è stata prima chiesta però ... –

+0

Quale qualcuno ha rimosso :( –

+0

Sì, .innerHTML è grezzo –

1

Ha detto di no jQuery, questo suona come un compito a casa, ma:

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