2013-08-19 97 views
0

我正在用ajax動態加載我的頁面內容,我想用某個函數加載某些.js文件。 .js文件加載正常,但僅在通過ajax加載下一頁之前。

例如:從主頁傳記頁: 1負載的js文件 第二:加載頁面傳(通過AJAX)

它看起來像Ajax頁面總是在狀態文件準備好。因此,它會在通過ajax加載傳記頁面的內容之前立即觸發.js文件。

$(document).ready(function() { 
    $(".element").click(function() { 
    jQuery.getScript("http://example.com/js/file.js"); 
    });   
}); 

我設法解決這個問題暫時以超時,從而使後頁傳記已加載的js文件將在5秒後加載。

$(".element").click(function() { 
    setTimeout(function() { 
    jQuery.getScript("http://example.com/js/file.js"); 
    }, 5000); 
}); 

如何更改功能,使其加載的傳記頁面已經被加載(或任何其他網頁)的.js文件,一旦文件,而不是超時。

EDIT1:

我在這裏加入了Ajax調用: http://jsbin.com/ediFUca

+1

我不理解你的過程是什麼。你是否調用'getScript()',然後從'file.js'中加載第二頁? –

+0

ajax調用在哪裏? – dann

回答

4

AJAX允許您指定一個回調:一種功能,當請求完成呼叫。

把你的腳本/函數回調,當你秒頁面加載完成,有效地解決你的問題,它會執行:

$.ajax({ 
    url: "test.html" 
}).done(function() { 
    //do things in here that should be done after the AJAX call e.g: 
    jQuery.getScript("http://example.com/js/file.js"); 
}); 
+0

嗨布萊斯,謝謝,但請你提供一個例子嗎? – Eric

+1

新增示例,請參閱更新後的帖子。 – Bryce

+0

謝謝你的例子。雖然我想有一個更通用的解決方案。因爲這在wordpress文章中不是很好。假設我想在我打開的每篇文章中加載一個js文件,那麼這個例子將不適合。但這是一個很好的開始,謝謝你的例子,+1 – Eric

1

正如你在你是第一行中提到加載動態抗衡因此您的預定義點擊處理程序不會針對稍後添加的內容觸發。

所以你需要使用事件委託。爲此,使用jQuery.on();

樣品

jQuery(document).on('click',".element",function() 
{ 
    jQuery.getScript("http://example.com/js/file.js"); 
}); 
+0

抱歉,js文件不能用你的例子執行 – Eric

相關問題