2013-01-19 92 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);