Как это ...
$('#outer').wrapInner($('<div>',{id:'middle'}));
DEMO: http://jsfiddle.net/uy6wg/
.wrapInner()
метод обернет все содержимое #outer
в элемент, который вы ему дадите.
Сюда войдут внутренние текстовые узлы, если ваш фактический контент содержит их.заботиться о производительности, вот собственное решение DOM ...
var outer = document.getElementById('outer'),
middle = document.createElement('div');
middle.id = 'middle';
while(outer.firstChild)
middle.appendChild(outer.firstChild);
outer.appendChild(middle);
DEMO: http://jsfiddle.net/uy6wg/1/
Это может бытьпревращается в функцию многократного использования ...
function wrapInner(id, tag) {
var outer = document.getElementById(id),
wrapper = document.createElement(tag);
while(outer.firstChild)
wrapper.appendChild(outer.firstChild);
outer.appendChild(wrapper);
return wrapper;
}
wrapInner('outer','div').id = "middle";
DEMO: http://jsfiddle.net/uy6wg/2/