如何清除ajax调用后初始化的函数的javascript

时间:2012-03-09 16:29:02

标签: javascript jquery ajax

我有以下几页。第A页和第B页。

页面A包含:

  • Page A HTML
  • Page A javascript
  • Page B javascript

然后我使用ajax调用将页面B加载到页面A并激活一个函数来初始化页面B的javascript。

如果我决定从页面A中删除页面B,我还想要清除在加载pageB时也初始化的所有JavaScript函数吗?

有没有办法清除JavaScript函数?

2 个答案:

答案 0 :(得分:4)

您可以在两个页面中使用单独的命名空间。因此,例如,页面A将其所有JavaScript放在window['pageA']下,而页面B则使用window['pageB']

要从第B页卸载所有功能,只需使用

即可
delete window['pageB'];

但请注意,清除任何处理程序或对页面B的功能的引用。因此,如果剩下一些,则可能会导致错误。

答案 1 :(得分:0)

对于你构建代码的方式,你可以简单地“删除”函数initPageB_function,你应该是金色的,就像这样:

delete initPageB_function;

如果您必须再次将pageB的内容重新加载到页面中,那么这是一个不同的故事,因为您应该为onclick事件重新绑定事件处理程序。 在这一点上,采用另一种方法要好得多:

将处理pageB的事件处理程序的标记和javascript代码放入“pageB”;这样,当您通过Ajax加载pageB时,您还将加载处理该页面的所有JS代码;这被称为委托(它是完全合理的,因为你的容器 - pageA - 不应该知道它将被加载什么)。

如果您正在使用像jQuery这样的帮助程序库,那么一切都应该非常简单:

在pageA的某处,您定义了一个用于加载pageB内容的位置:

<div id='pageB'></div>

当你必须加载它时:

$('#pageB').load( 'http://url.for.pageB' );

一旦加载进度,pageB中的JS代码将被执行,你将成为金色:) 要删除页面内容,只需清空容器:

$('#pageB').empty();

JS也将消失。 下次再次重新加载页面时,它自己的JS将再次执行。非常简单有效。 :)