2010-04-30 13 views
12

Sto usando JQuery e quello che voglio succedere è.jquery fadeout, load, fadein

Div si dissolve utilizzando il comando fadeOut. Quindi carica il contenuto da un url usando il comando load. Quindi, una volta caricato, il contenuto torna indietro usando il comando fadeIn.

Il codice che ho è:

$("#myDiv").fadeOut().load('www.someurl.com').fadeIn() 

Tuttavia questo non funziona. Si tratta di un tipo di lampi, quindi carica e carica. Penso che il problema è che la dissolvenza sta accadendo prima che il carico sia completo.

Cosa devo fare

Grazie

risposta

11

è possibile utilizzare la funzione di load() callback come questo:

si potrebbe desiderare di utilizzare lo stato del carico() chiamare per vedere se tutto è stato completato correttamente.

$("#myDiv").fadeOut().load("www.someurl.com", function(response, status, xhr) { 
    if (status == "error") { 
     // handle error 
    } 
    else 
    { 
     $(this).fadeIn(); 
    } 
}); 
+0

È questo perché il "carico" è asincrona e le altre azioni continueranno a lavorare? La tua risposta aspetterà di chiamare "fadeIn" dopo che i report di carico sono stati completati, corretto? – MrChrister

+0

sì, una volta terminato il caricamento chiamerà fadeIn() – hunter

5

Utilizzare la success callback per .load(), in questo modo:

$("#myDiv").fadeOut().load('www.someurl.com', function() { 
    $(this).fadeIn(); 
}); 
1

è necessario fare la dissolvenza nella funzione di callback carico a causa della natura asincrona di AJAX.

9
$("#myDiv").fadeOut(1000, function() { 
    $("#myDiv").load("www.someurl.com", {limit: 25}, function(){ 
     $("#myDiv").fadeIn(); 
    }); 
}); 

Il limite specifica per quanto tempo il tempo di attesa per una risposta nella chiamata carico