jQuery использует innerHTML
для получения HTML. Вы не собираетесь получить точное состояние DOM, используя этот атрибут. Например, содержимое значений input
или состояние поля select
не останутся прежними, если вы не измените их должным образом перед вызовом innerHTML
.
Что это за тег wrapping
, о котором вы говорите? Для большинства из них innerHTML должен работать нормально.
Например, я использую этот код для состояния полей select
и input
.
// it's defaultValue so we can use innerHTML
$("#divContentInside input").each(function () {
this.defaultValue = this.value;
});
// go through each select and replace
// it's selection so we can use innerHTML
$("#divContentInside select > option").each(function () {
if (this.selected) {
this.setAttribute("selected", true);
} else {
this.removeAttribute("selected");
}
});
Я не нашел проблем с согласованностью состояния других элементов, но, вероятно, есть.