我有以下几页。第A页和第B页。
页面A包含:
然后我使用ajax调用将页面B加载到页面A并激活一个函数来初始化页面B的javascript。
如果我决定从页面A中删除页面B,我还想要清除在加载pageB时也初始化的所有JavaScript函数吗?
有没有办法清除JavaScript函数?
答案 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将再次执行。非常简单有效。 :)