2012-07-05 18 views
5

Mam następującą strukturę:JavaScript dostać elementu nadrzędnego i napisać uchwyt div dla rodzeństwa

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

Na onload, chcę obejmują „posiadacz” div, który przechowuje wszystkie dzieci rodzica tak:

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

Znając tylko identyfikator "child1", w jaki sposób mogę dodać element div właściciela do siebie i rodzeństwa?

Rozważania

  • przycisków "child1" id jedyny znany identyfikator.
  • Klasa "rodzic" i "dziecko2" są nazwą dynamiczną i ulegną zmianie, dlatego nie mogą być używane jako identyfikatory.
  • musi być vanilla JavaScript.

Myśli?

+0

Czy Twoje pytanie pierwotnie mieć tag jQuery i nie mówią „waniliowy JavaScript”? Zastanawiam się, skoro masz tak wiele odpowiedzi jQuery (od mnie włącznie) i jestem pewien, że wspomniałem o jQuery gdzieś w czasie, gdy odpowiadałem! –

+2

Przepraszam James, nie wspomniałem o JQuery. (Mój wpis nie był edytowany od tego czasu) –

Odpowiedz

18

Widząc, jak to musi być JavaScript (jQuery i nie) i można tylko identyfikują się child1 przez ID mógłby zrobić coś jak ropa jak to:

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

Nadzieja to pomaga ...

+3

+1 za to, że jako jedyny zauważył "musi być vanilla JavaScript"! Jestem pewien, że tego punktu nie było, gdy zadano pierwsze pytanie ... –

+0

Który ktoś usunął :( –

+0

Tak, .innerHTML jest prymitywny –

1

powiedział bez jQuery, to brzmi jak zadanie domowe, ale:

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