2011-09-21 172 views
7

我有一個簡單的自定義選項卡模塊,該模塊使用AJAX請求加載選項卡(通過$(elem).load())。在每個使用AJAX加載的頁面上,我都有一些JavaScript。第一次加載頁面時(通過URL的直接輸入,而不是AJAX),javascript會完全啓動。當我通過AJAX選項卡離開頁面時,頁面中的JavaScript不再被加載。jQuery - 當使用AJAX加載內容時document.ready不會觸發

有什麼辦法可以強迫他們執行?

回答

10

(不點火被放置在一個$(document).ready()功能是否有幫助的JavaScript),您需要使用load()功能的回調:

$(elem).load('source.html', function() { 
    // here you need to perofrm something what you need 
    ActionOnDocumentReady(); 
}); 

你可以把你所有的行動$(document).ready成某些功能(例如ActionOnDocumentReady()),並撥打電話load()回叫。

5

domeready事件只在初始dom準備就緒時觸發(如名稱和jquery-api建議)。

如果你想使用jquerys load()並且在加載完成後觸發一個函數,你必須使用回調函數(according to the api)。

,如果你想要做的domready中和負載事件同樣的事情,最好的方法是定義一個新的功能:

function dostuff(){ 
    // do some stuff here 
} 

和火在這兩種情況下,這種功能:

$(function(){ // domready | shortcut for "$(document).ready()" 
    dostuff(); 
}) 

$('#something').load('script.php', function() { // callback on load() 
    dostuff(); 
}); 
3

將您的$(document).ready()代碼放入新方法中。我們稱它爲methodA。現在從$(document).ready()稱爲methodA。其次,在ajax請求成功後調用相同的方法。這應該可以解決你的問題。