我想知道如何在完整的ajax应用程序上管理脚本范围
让我解释一下情景
加载场景:
当我选择另一个页面时(想象一下列出了所有页面的组合),再次执行Load Scenario ......
母版页中重要的2 js代码行
$("#divContent").children().remove();
$("#divContent").load("*PAGES-X*");
)
这是一个很大的问题,JQuery eval 脚本代码,似乎把它放在一个Eval数组中(在firebug中它位于jquery.mins.js / eval / seq / 数组中)编号) 所以js永远不会从eval选项卡中卸载
因此,如果我的页面中有一些Live事件,则代码会在页面加载时执行多次...
所以,我需要一种方法来清理那个eval ...... 或者一种自动方式从特定范围中删除所有事件(因为我在主页面上有其他事件绑定)
谢谢你
答案 0 :(得分:1)
答案 1 :(得分:0)
加载脚本后,AFAIK就无法卸载它。
您可以使用iframe而不是div,这样每当重新加载页面时,您都会再次从干净的平板(在iframe中)开始。
或者,如果一次加载多个脚本,则以不会导致冲突的方式编写javacsript。
答案 2 :(得分:0)
您可以尝试使用命名空间。 在您的主页面中:
var ws = {};
在您加载的内容中:
$( ws.funnyStuff = function() {
// some realy funny stuff here
});
完成后,您可以放弃整个命名空间:
ws = {};
注意:firebug中的条目将保留,我不确切知道原因,但相关代码将不再执行。