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

How to clear javascript of functions initialised after ajax call

本文关键字:初始化 函数 javascript 调用 ajax 何清除 清除      更新时间:2023-09-26

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

页面A包含:

  • 页面A HTML
  • 页面A javascript
  • 页面B javascript

然后,我使用ajax调用将页面B的HTML加载到页面A中,并启动一个函数来初始化页面B的javascript。

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

是否有清除JavaScript函数的方法?

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

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

delete window['pageB'];

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

对于构建代码的方式,您可以简单地"删除"函数initPageB_function,您应该是金色的,如下所示:

delete initPageB_function;

如果您必须再次将pageB的内容重新加载到页面中,那就另当别论了,因为您应该为onclick事件重新绑定事件处理程序。在这一点上,遵循另一种方法要好得多:

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

如果您使用的是像jQuery这样的辅助库,那么一切都应该非常简单:

在页面a的某个地方,您定义了一个加载页面B内容的位置:

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

当你必须加载它时:

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

一旦加载完成,pageB中的JS代码就会被执行,您将获得金牌:)要删除页面的内容,您只需清空容器:

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

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