如何清除ajax调用后初始化的函数的javascript
How to clear javascript of functions initialised after ajax call
我有以下页面。第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将再次执行。非常简单有效。:)
- JavaScript初始化函数
- require.js+backbone.js:如何构造具有初始化函数的模块
- JavaScript初始化函数
- $(this.el).find()在事件处理程序中工作,而不是在初始化函数(主干.js)中工作
- Do变量声明初始化函数
- 在集合中初始化函数的优雅方式
- 如何在初始化函数中向事件侦听器添加原型函数
- CKEDITOR 的初始化函数不执行
- jQuery UI:通过 AJAX 加载内容后重新初始化函数
- 预初始化函数
- 如何在不使用剑道层次结构网格中的详细初始化函数的情况下获取第一个孩子的兄弟姐妹
- 如何正确使用多个初始化函数
- 有没有办法将初始化函数传递给轨道幻灯片
- 如何在主干中初始化函数后将事件绑定到DOM
- 编写初始化函数的正确方法
- Javascript-从函数中调用/初始化函数
- Rails初始化函数的最佳方式是在ajax和文档准备好之后用Javascript
- 传递参数以初始化函数
- javascript初始化函数块之外的函数的结果,fcc测试
- 调用ng repeat内部的初始化函数