jquery回调和嵌套问题

时间:2009-09-11 13:28:59

标签: jquery callback nested

我真的很困惑,不知道如何继续,可能你可以帮助我:)。

我做了一个带有菜单的html页面,该菜单将外部内容加载到div中(所有内容都使用jquery和ajax-load完成)。

如果我想添加第二个功能,没有任何事情发生,我不确定嵌套,是不是正确。

这是两个函数,第一个加载整个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 个答案:

答案 0 :(得分:1)

首先

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

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

这是一种jQuery方法,用于设置在DOM加载时执行的函数。你在函数changeMenuchangeSubMenu中使用了这个,这是不必要的(除非你在页面开始加载时立即执行这两个函数,但那将是一个奇怪的设置方式。)

load()命令采用将在加载完成时执行的回调函数。例如,

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

[callback]可以是匿名函数(内联函数)或命名函数。

希望这有帮助