如何在操作后重置DOM
How to reset DOM after manipulation?
我的页面包含一些使用jQuery构建的小向导。
我想为用户提供重新启动/重置向导并从头开始。
有没有办法在不刷新页面的情况下做到这一点?
实现此目的的一种方法是将向导的元素树克隆为初始状态,并将其存储在全局变量中或文档的数据中:
$(document).data("initialWizard", $("#yourWizard").clone(true));
(注意,将true
传递给clone()
也会克隆元素数据和事件处理程序,这在您的情况下可能很方便。)
然后,当您想要将向导恢复到原始状态时,您可以这样做:
$(document).data("initialWizard").replaceAll("#yourWizard");
在不刷新页面的情况下重新开始的唯一方法是手动将DOM返回到页面加载时的状态,并恢复任何javascript状态。你要么必须记录/记住初始状态,这样你就可以回到它,要么跟踪所有的增量变化,这样你也可以回到那里。
如果你真的想重新开始,刷新一下有什么不好?
与上面类似,这是我最后做的。我将整个jQuery文档内容存储在一个bootup()函数中(并运行它)。主体的初始内容存储在一个originalDOM变量中。然后,我有一个playAgain函数,它将body的内容设置为原始dom,并通过调用bootup()函数再次运行整个jQuery内容。这一切都可以通过点击类"。startover"的按钮来触发。
bootup();
var bootup = function(){$(document).ready(function(){
var originalDOM=document.body.innerHTML;
//jQuery lines of code here
var playAgain = function(){
$(".startover").click(function(){
document.body.innerHTML = originalDOM;
bootup();
});
};
playAgain();
});};
希望这对任何寻找类似东西的人有所帮助,如果有任何我可以改进的地方,很高兴听到反馈!
相关文章:
- AngularJS-独立的控制器和DOM操作
- casper.waitForSelector无法处理动态DOM操作
- 页面加载后的 Dojo DOM 操作
- 我应该只在指令的链接 fn 中进行 DOM 操作吗?
- 将 DOM 操作与 Angular 控制器分离 - 需要最佳实践
- 文本内容长度在 DOM 操作后不会更改
- DOM 操作、向后兼容性和跨浏览器问题
- 为什么我需要使用 document.write 而不是 DOM 操作方法
- "撤消”;Javascript中的DOM操作函数
- JavaScript中面向对象DOM操作的混乱混乱
- 使用循环来简化DOM操作VanillaJS
- JavaScript-所有DOM操作函数都返回null/empty
- 浏览器使用Java而不是Javascript作为DOM操作语言
- DOMNodeInserted在对主体执行DOM操作时表现得很奇怪
- 使用 jQuery 或 AngularJS 的 DOM 操作和选择
- DOM 操作以重现订单列表
- 使用 PhantomJS 的 DOM 操作
- 如何在 AngularJS 中同时处理 DOM 操作和状态更改
- 如何使用Javascript在UL-LI块中进行简单的DOM操作
- 角度指令 DOM 操作行为