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

Jquery:如何释放所有事件处理程序、dom更改?,jquery,Jquery,有没有办法重置当前页面?释放所有事件处理程序,删除Jquery切换的任何CSS,简单地说,就是将页面恢复到原始状态而不刷新?刷新/重新加载页面。没有别的办法。我对OP的帖子发表了评论 但是想一想,我认为有一种方法 在css部分,动画是在style属性上完成的。删除style属性将从动画中重置元素。但请注意,如果您使用style属性来设置元素的样式,则该属性也将被删除 在绑定事件上,您可能希望绑定带名称空间的事件。例如,绑定单击看起来像这样 $('#someID').bind('click.toB

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

刷新/重新加载页面。没有别的办法。
我对OP的帖子发表了评论

但是想一想,我认为有一种方法

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

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

$('#someID').bind('click.toBeRemove', function(){...})
因此,删除事件将很容易,因为
$('*').unbind('.toBeRemove')
。保留其他原始事件(在本例中为单击事件)

使用插件时,请使用那些具有
.destroy()
方法的插件,该方法将删除元素上的it功能和样式


但这并不是100%确定有效。只是一个理论。没有简单的方法可以做到这一点对没有
$(窗口)。reset()
可以在不重新加载的情况下重置页面。

好吧,这里有一个解决方案-捕获
主体的克隆,就像在您对其执行任何操作之前一样,然后在需要重置时,使用此克隆替换整个
主体

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

$('#reset').click(function() {
    $('body').replaceWith(original);
}); 
当然,这不会撤消您在其他地方所做的任何更改,例如在
头部
,但它仍然比您拥有的其他选项稍好,对吗

见:


Edit:刚刚实现,这也不会杀死使用
live
委托创建的任何事件处理程序。再说一遍,不,这不是100%干净

刷新/重新加载页面。别无选择。在给出“做不到”的评论/回答之前,最好犹豫一下o) 那么为什么要在事件上使用名称空间呢?就我而言,通过迭代每个元素来删除所有事件处理程序就足够了。感谢您的回答。它应该处理
.delegate()
处理程序,因为这些处理程序已连接到各自的容器,因此它们将不再启动。它没有做的是清除jQuery存储的任何数据/事件处理程序。它只是将其与元素解除关联,因此您仍然希望删除该数据。它可能像
deletejquery.cache一样简单不过。