通过JQuery管理ajax应用程序中的javascript范围
我想知道如何在一个完整的ajax应用程序上管理脚本范围 让我来解释一个场景通过JQuery管理ajax应用程序中的javascript范围,javascript,jquery,firebug,Javascript,Jquery,Firebug,我想知道如何在一个完整的ajax应用程序上管理脚本范围 让我来解释一个场景 页面在div中动态加载 页面是php文件 页面包含脚本标记(静态和通过php生成),具体取决于 上下文 负载场景: 母版页通过$.load jquery函数加载页面 插入页面并执行脚本(主要是输入事件或实时事件) 当我选择另一个页面时(想象一个列出了所有页面的组合),加载场景将再次执行 母版页中重要的2 js代码行 $("#divContent").children().remove(); $("#divConte
- 页面在div中动态加载
- 页面是php文件
- 页面包含脚本标记(静态和通过php生成),具体取决于 上下文
$("#divContent").children().remove();
$("#divContent").load("*PAGES-X*");
)
这里是一个大问题,JQueryeval脚本代码,并且似乎将其放入一个eval数组中(在firebug-its中位于JQuery.mins.js/eval/seq/Array-number)
因此js永远不会从eval选项卡中卸载
因此,如果我的页面中有一些实时事件,那么代码的执行次数与页面加载次数相同
因此,我需要一种方法来清理该评估…或者一种自动方法来从特定范围中删除所有事件(因为我在母版页上有其他事件绑定)
谢谢你一旦加载了脚本,那么就不可能卸载它了 您可以使用iframe而不是div,这样,每当重新加载页面时,您就可以再次从iframe中的一块空白开始
或者,编写JavaCScript时,如果同时加载多个脚本,则不会导致冲突。一旦加载了脚本,就不可能卸载它 您可以使用iframe而不是div,这样,每当重新加载页面时,您就可以再次从iframe中的一块空白开始 或者,如果一次加载多个脚本,编写JavaCScript的方式将不会导致冲突。可能
$(selector).die();
有用吗?它将删除所选元素的所有live()绑定。有关更多信息,请参阅 可能
$(selector).die();
有用吗?它将删除所选元素的所有live()绑定。有关更多信息,请参阅 您可以尝试使用名称空间。 在主页中:
var ws = {};
在加载的内容中:
$( ws.funnyStuff = function() {
// some realy funny stuff here
});
完成后,可以放弃整个命名空间:
ws = {};
注意:firebug中的条目将保留,我不知道确切原因,但关联的代码将不再执行。您可以尝试使用名称空间。 在主页中:
var ws = {};
在加载的内容中:
$( ws.funnyStuff = function() {
// some realy funny stuff here
});
完成后,可以放弃整个命名空间:
ws = {};
注意:firebug中的条目将保留,我不知道确切原因,但相关代码将不再执行。这使得与母版页的通信变得复杂。。。我需要两个页面communicate@Bgnt44如果它们来自同一个域,两个页面将能够通过相对简单的javascript相互通信。另外,还有HTML5 postMessage函数。页面使用了大部分全局javascript,我确定不能将页面代码隔离在一个使与母版页通信复杂的IFrame中。。。我需要两个页面communicate@Bgnt44如果它们来自同一个域,两个页面将能够通过相对简单的javascript相互通信。另外,还有HTML5 postMessage函数。页面使用了全局javascript的很大一部分,我确定不能在iframe中隔离页面代码。这不会阻止这些脚本中的全局代码运行(例如window.load).好的,基本上你可以在页面关闭时解除绑定事件,我知道这可能是一项要求,但仍然希望我可以将已评估的js放在一个专用范围内。它删除了所有当前的live()绑定,以便可以添加新的live()绑定,而无需复制现有绑定。但是我可能还是不明白你到底想要什么:)问题是每次页面加载都可能会添加新的相互重复的live()事件,对吗?对,而且每次页面加载都会在jquery eval数组中添加一些新的js代码,而且永远不会卸载!!!顺便说一句,die()函数可以帮助我删除多个实时事件,从而解决第一个问题。。。但是我想更进一步,删除内存中未使用的脚本,如果我可以的话。这不会阻止这些脚本中的全局代码运行(例如window.load)。好的,基本上你可以在页面关闭时解除绑定事件。我知道这可能是一个要求,但仍然希望我可以将已评估的js放在一个专用范围内。它删除了所有当前的live()绑定,以便可以添加新的live()绑定,而无需复制现有绑定。但是我可能还是不明白你到底想要什么:)问题是每次页面加载都可能会添加新的相互重复的live()事件,对吗?对,而且每次页面加载都会在jquery eval数组中添加一些新的js代码,而且永远不会卸载!!!顺便说一句,die()函数可以帮助我删除多个实时事件,从而解决第一个问题。。。但如果可以的话,我想进一步删除内存中未使用的脚本