Jquery:如何释放所有事件处理程序,dom更改?

时间:2010-10-06 02:17:12

标签: jquery

有没有办法重置当前页面?释放所有事件处理程序,删除任何由Jquery切换的CSS,简单来说,将页面恢复到原始状态而不刷新?

2 个答案:

答案 0 :(得分:2)

嗯,这是一个解决方案 - 在你完成任务之前捕获body的克隆,然后当你需要重置时,用这个克隆替换整个body

var original = $('body').clone();

$('#reset').click(function() {
    $('body').replaceWith(original);
}); 

当然,这不会撤消您在其他地方所做的任何更改,例如在head中,但它仍然比您获得的其他选项略胜一筹,对吧?

请参阅:http://jsfiddle.net/uevrM/

修改:刚刚意识到,这也不会扼杀使用livedelegate创建的任何事件处理程序。所以,不,不,这不是100%干净。

答案 1 :(得分:0)

refresh/reload page. There's no other way.我评论了OP的帖子。

但是考虑到这一点,我认为有一种方法。

在css部分,动画正在style属性上完成。删除style属性会从动画中重置元素。但请注意,如果您使用style属性来设置元素的样式,那么它也会被删除。

在绑定事件上,您可能希望绑定命名空间事件。例如,绑定点击看起来像这样,

$('#someID').bind('click.toBeRemove', function(){...})

因此,$('*').unbind('.toBeRemove')可以轻松删除事件。保留其他原始事件(在此示例中为click事件)。

使用插件时,请使用具有.destroy()方法的插件,以便在元素上删除它的功能和样式。

但这并非100%确定有效。只是一个理论。有这么简单的方法 NO 。 - 是的!没有$(window).reset()会重置页面而不重新加载。