2013-07-19 3 views
0

Прежде чем я извиняюсь за любые дублеты, я искал немного, но не нашел сценарий, который соответствует моим потребностям. (BTW: Javascript не моя сильная сторона)Оберните изображение в родителя

Что мне нужно, это сценарий, который обертывает каждое изображение внутри «post» класса div с родительским элементом div.

Что у меня есть следующие:

<div class="post"> 
<img src="aSimpleImage.png"> 
</div> 

То, что я хочу, чтобы результат будет:

<div class="post"> 
<div class="parent"><img src="aSimpleImage.png"></div> 
</div> 

Я хочу, чтобы сценарий, чтобы быть чистым, ванильный Javascript, нет JQuery или дополнительный внешние HTTP-запросы для языков сценариев. Я пробовал:

var parent = element.parentNode; 
var wrapper = document.createElement('.parent'); // set the wrapper as child (instead of the element) 
parent.replaceChild(img, .parent); // set element as child of wrapper 
wrapper.appendChild(element); 

EDIT: Нашли этот фрагмент

// create the container div 
var dv = document.createElement('div'); 
// get all divs 
var divs = document.getElementsByTagName('div'); 
// get the body element 
var body = document.getElementsByTagName('body')[0]; 

// apply class to container div 
dv.setAttribute('class', 'container'); 

// find out all those divs having class C 
for(var i = 0; i < divs.length; i++) 
{ 
    if (divs[i].getAttribute('class') === 'C') 
    { 
     // put the divs having class C inside container div 
     dv.appendChild(divs[i]); 
    } 
} 

// finally append the container div to body 
body.appendChild(dv); 

ли кто-то будь добр продуманным это в то, что я с просьбой?

+0

Вы попробовали что-нибудь? Поместите некоторый код. – basher

ответ

0

Я хотел бы предложить:

function imgWrap(parent) { 
    if (!parent || parent.nodeType !== 1) { 
     return false; 
    } 
    else { 
     var images = parent.getElementsByTagName('img'), 
      newDiv = document.createElement('div'), 
      tmp; 
     newDiv.className = 'parent'; 
     for (var i = 0, len = images.length; i < len; i++) { 
      tmp = newDiv.cloneNode(true); 
      parent.insertBefore(tmp, images[i]) 
      tmp.appendChild(images[i]); 
     } 
    } 
} 

JS Fiddle demo.

+0

Ты рок! Спасибо – fngryboi

+0

Вы очень желанны! –

Смежные вопросы