2013-01-19 45 views
0

有人可以请我解释一下。 这里的目标是通过ajax调用外部html加载,然后加载并执行与该html代码关联的外部脚本。在ajax加载回调函数中调用getScript

代码A:

$('#content').load(toLoad,function(){ 
     $.getScript("toLoadScript.js"); 
}); 

代码B:

$('#content').load(toLoad,showNewContent()); 
function showNewContent() { 
    $.getScript("toLoadScript.js"); 
} 

代码C:

$('#content').load(toLoad,showNewContent); 
function showNewContent() { 
    $.getScript("toLoadScript.js"); 
} 

为什么只有代码C成功地加载和执行,而其他脚本2没有。

问题有关:Jquery: Run script after ajax load()

+0

b绝对不应该工作;一个应该尽管 – mikakun

+0

没有理由'A'不应该工作。 'B'需要使用函数引用,而不用'()' – charlietfl

+0

我的不好..我重新测试了我的代码,果然A可以工作,虽然我可以发誓它以前没有,并且我刚刚意识到为什么B不会工作。傻我.. –

回答

0

部分答案:为什么代码B不起作用

在代码B要调用.load如下:

$('#content').load(toLoad,showNewContent()); 

基本上打破了到:

var newContent = showNewContent(); 
$('#content').load(toLoad,newContent); 

所以你要调用showNewContent并将结果传入.load

这不是你想要做的。相反,你应该通过函数本身(而不是结果)到load

$('#content').load(toLoad,showNewContent);