callback jQuery e problema de nidificação
Pergunta
I'am realmente confuso e não sabe como chegar em, provavelmente, você pode me ajudar:)
I'e fez um html-página com um menu que carrega o conteúdo externo para uma div (tudo feito com jquery e ajax-carga).
Se eu quiser adicionar uma segunda função nada acontece e I'am não tem certeza sobre a nidificação, wheather é certo ou não.
Aqui estão duas funções, as primeiras cargas de um uma página html inteiro, o segundo carrega uma div externa em uma div do arquivo carregado anterior (esperança de que eu descrevi para que você possa compreendê-lo :)) (numRand é um número aleatório, não é importante para a questão).
function changeMenu(menupunkt) {
$(function(){
$('#mainContent').fadeOut('fast', function(){ $("#mainContent").load(menupunkt+".html?"+numRand);});
$('#mainContent').fadeIn('fast');});
return false;
}
Aqui está o segundo código:
function changeSubMenu(submenupunkt,subdiv) {
$(function(){
$('#htmlContainer').fadeOut('fast',function(){ $("#htmlContainer").load(submenupunkt+".html?"+numRand+" div#"+subdiv);});
$('#htmlContainer').fadeIn('fast');});
return false;
}
Eu quero combinar os dois função para que eu possa chamar uma função:
someFunction(menupunkt,submenupunkt,subdiv)
Isso deve primeiro carregar o menupunkt.html e se essa ação foi concluída ele deve carregar o div.
Se eu quiser carregar um menupunkt e nenhum submenupunkt ou subdiv, como posso chamar a função?
Espero que eu poderia explicar a minha pergunta para que vocês podem segui-lo, pouco complicado eu sei:)
Agradecemos antecipadamente!
Solução
Antes de mais nada
$(function() { .... code here .... });
é um atalho para
$(document).ready(function() { .... code here .... });
que é uma forma jQuery de criação de uma função a ser executada quando o DOM foi carregado. você estiver usando isso dentro de sua funções changeMenu
e changeSubMenu
que não é necessário ( menos está a executar ambas as funções imediatamente quando uma página começa a carregar, mas que seria um estranha maneira de coisas configurada).
O comando load()
leva uma função callback que será executada quando a carga foi concluída. Por exemplo,
$("#mainContent").load(menupunkt+".html?"+numRand, [callback here]);
[callback]
pode ser tanto uma função anônima (função inline) ou uma função chamada.
Espero que isso ajude