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