通过JQuery管理ajax应用程序中的javascript作用域
Manage javascript scope in ajax application via JQuery
我想知道如何管理一个完整的ajax应用程序的脚本范围
让我解释一个场景
- 页面在div中动态加载,
- 页面是php文件
- 页面包含脚本标签(静态的和通过php生成的)取决于上下文
负载场景
- 母版页面通过$加载页面。加载jquery函数
- 页面被插入并执行脚本(主要是输入事件或实时事件)
当我选择另一个页面时(想象一下列出所有页面的组合),加载场景再次执行…
母版页中重要的2js代码行
$("#divContent").children().remove();
$("#divContent").load("*PAGES-X*");
)
这里是大问题,JQuery eval脚本代码,似乎把它放在一个eval数组(在firebug它位于JQuery .min .js/eval/seq/数组号)所以js永远不会从eval标签
中卸载因此,如果我的页面中有一些Live事件,那么代码将在页面加载多少次时执行多少次…
所以,我需要一种方法来清理eval…或自动从特定范围中删除所有事件的方法(因为我在母版页上有其他事件绑定)
谢谢你
可能
$(selector).die();
会派上用场吗?它将移除所选元素的所有live()绑定。更多信息请访问http://api.jquery.com/die/!
一旦脚本被加载,它是不可能的,AFAIK,卸载它。
您可以使用iframe而不是div,这样每当页面重新加载时,您就可以重新开始(在iframe内)。
或者,在一次加载多个脚本时,以一种不会导致冲突的方式编写javascript。
您可以尝试使用名称空间。在你的主页:
var ws = {};
在你加载的内容中:
$( ws.funnyStuff = function() {
// some realy funny stuff here
});
当你完成后,你可以放弃整个命名空间:
ws = {};
注意:firebug中的条目将保留,我不知道确切原因,但相关代码将不再执行
相关文章:
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- Javascript作用域和Ajax调用;工作不正常
- switch语句中的Javascript作用域
- JavaScript作用域:如何创建具有不同值的匿名函数
- Javascript作用域规则和mongo-map/reduce函数
- Javascript作用域问题,对象在分配后没有数据
- 可能存在Javascript作用域问题
- 本地Javascript作用域问题
- 从另一个文件调用时出现Javascript作用域错误
- JavaScript 作用域和 Angular JS 作用域之间的区别是什么?
- JavaScript 作用域:在函数后保留全局变量值
- Javascript:作用域链/变量查找性能
- ES6中的JavaScript作用域已转换
- Javascript作用域意外结果
- 订阅服务器模式中的Javascript作用域
- 了解Javascript作用域和变量
- 绑定时出现Javascript作用域问题
- Javascript作用域链式吊装
- javascript作用域和jquery's$(文档).准备好了
- Javascript作用域问题:函数在$(doc).ready()中可用,但在事件处理程序中不可用