Вы должны убедиться, что делаете это с DOM, а не с innerHTML
(и если вы используете решение jQuery, предоставляемое jk, убедитесь, что оно перемещает узлы DOM, а не с помощью innerHTML
внутри), чтобы сохранить такие вещи, как обработчики событий.
Мой ответ во многом похож на insin, но он будет работать лучше для больших структур (добавление каждого узла в отдельности может облагаться налогом на перерисовки, где CSS нужно повторно применять для каждого appendChild
; с DocumentFragment
, это происходит только один раз поскольку он не отображается до тех пор, пока все его дочерние элементы не будут добавлены и не добавлены в документ).
var fragment = document.createDocumentFragment();
while(element.firstChild) {
fragment.appendChild(element.firstChild);
}
element.parentNode.replaceChild(fragment, element);