2009-09-11 91 views
0

我'真的很困惑,不知道怎麼弄的,也許你可以幫我:)jQuery的回調和嵌套問題

I'e由一個HTML頁面,它加載外部內容到菜單一個div(全部用jquery和ajax負載完成)。

如果我想添加第二個函數,沒有任何反應,並且我不確定嵌套是否正確。

這裏有兩個函數,第一個加載一個完整的html頁面,第二個加載一個外部div到前一個加載文件的div(希望我描述了它,以便您可以理解它:))(numRand是一個隨機數,對於這個問題不重要)。

function changeMenu(menupunkt) { 
$(function(){ 
    $('#mainContent').fadeOut('fast', function(){ $("#mainContent").load(menupunkt+".html?"+numRand);}); 
    $('#mainContent').fadeIn('fast');}); 
    return false; 

}

這裏的第二個代碼:

function changeSubMenu(submenupunkt,subdiv) { 
    $(function(){ 
     $('#htmlContainer').fadeOut('fast',function(){ $("#htmlContainer").load(submenupunkt+".html?"+numRand+" div#"+subdiv);}); 
     $('#htmlContainer').fadeIn('fast');}); 
     return false; 

}

我想這兩個功能結合起來,這樣我可以調用一個函數:

someFunction(menupunkt,submenupunkt,subdiv) 

這應該先加載menupunkt.html,如果這個動作已經完成,它應該加載div。

如果我只想加載menupunkt並且沒有submenupunkt或subdiv,我該如何調用該函數?

我希望我可以解釋我的問題,這樣你們可以跟着它,有點複雜,我知道:)

預先感謝您!

回答

1

首先

$(function() { .... code here .... }); 

$(document).ready(function() { .... code here .... }); 

其是設置功能時,DOM已加載到執行的一個jQuery方式簡寫。你正在使用這個功能changeMenuchangeSubMenu這是不必要的(除非你正在執行這兩個功能,當一個頁面開始加載,但這將是一個奇怪的方式來設置)。

load()命令採用回調函數,該函數將在加載完成時執行。例如,

$("#mainContent").load(menupunkt+".html?"+numRand, [callback here]); 

[callback]可以是匿名函數(內聯函數)或命名功能。

希望這有助於