我實際上可以做了與我工作的網站類似的東西。你要做的是爲主頁上的$ .load()調用的每個頁面創建一個回調函數。
請看下面的代碼從the jquery.load() documenation:
$('#result').load('ajax/test.html', function() {
alert('Load was performed.');
});
你的具體情況,你會希望這樣的事情主要測試load.html頁面上。
$(document).ready(
function(){
$('li').click(function(){
var showThisContent = this.id;
$('#content').load('test-load-'+showThisContent+'.html', function(){
if (showThisContent == "one"){
//Do logic for test-load-one.html
//Pre-load your images here.
//You may have to assign a class to your anchor tag
//and do something like:
$('a.assignedClass').mouseover(function(){});
$('a.assignedClass').mouseout(function(){});
} //end if
if (showThisContent =="two"){
//Do logic for test-load-two.html here
$('.slideshow').cycle({
fx: 'fade',
speed: 500,
timeout: 0,
next: '.nextSSimg',
prev: '.prevSSimg',
pager: '#SSnav',
cleartype: true,
cleartypeNoBg: true
}); //end .cycle()
} //end if
); //end .load(location, callback function())
}); //end $('li).click()
}); //end $(document).ready()
現在,很明顯,我沒有轉換的所有代碼,但這裏發生了什麼是一旦的document.ready完成後,回調函數就會運行,因爲像「的元素.slideshow」現在加載進入DOM,您的回調代碼將適當地綁定到它們。你可以用幾種方式切換這段代碼,使其具有相同的結果(即,將2個$ .load()包裝進條件中,而不是在.load回調中執行條件邏輯,和/或將一個callbackOne )和callbackTwo()函數上面的document.ready,然後適當調用它們),但這是你的偏好。您應該能夠使用$ .load()的回調函數參數來執行您想要的操作。
我刪除了document.ready塊,它仍然失敗。 – jac 2010-03-04 16:12:18
我更新了答案。 – Pointy 2010-03-04 16:16:37
不好。我改變了主要文檔,只是在#content-area div(不是整個HTML文件)中引入並移動了該div內的腳本。仍然失敗。 – jac 2010-03-04 16:22:48