替换innerHTML并返回保留事件的原始HTML

Jor*_*.S. 1 html javascript jquery dom innerhtml

我有一个目标div el显示一些组件.这些组件附加了一些事件(鼠标悬停,点击时).我不控制这些代码既不是那些事件.他们就在那里.我想在这个div中渲染一个小部件.为此我做了类似的事情:

var save = el.innerHTML; 
el.innerHTML = "my widget code";
Run Code Online (Sandbox Code Playgroud)

当我的小部件完成其过程时,我想回到原始内容,所以我这样做:

el.innerHTML = save;
Run Code Online (Sandbox Code Playgroud)

以前保存的组件已正确替换,但附加到它们的事件不再起作用.

我无法隐藏,显示div.我需要替换innerHTML以获得确切的样式和定位.

你会怎么做?如果它有帮助我正在使用jQuery.

谢谢.

Fel*_*ing 5

将DOM元素序列化回HTML时,所有事件处理程序和绑定数据都将丢失.

如果您有DOM,请使用它,而不是使用HTML:

var save = $(el).children().detach();
$(el).html(widgetHTML);

// later
$(el).empty().append(save);
Run Code Online (Sandbox Code Playgroud)