2010-11-26 36 views
2

Je donne les résultats suivants:Fondu un div avec le contenu A et fondu Dans le même div avec le contenu B

$(function() { 
    $('.ajaxloader').click(function(event) { 
     var target = $(this).attr('href'); 
     window.location.hash = target; 
     $('#conteudoInscricao').fadeOut('slow', function() { 
      $.ajax({ 
       url: target, 
        success: function(data) { 
         $('#conteudoInscricao').html(data); 
         $('#conteudoInscricao').fadeIn('slow'); 
        } 
      }); 
     }); 
     return false; 
    }); 
}); 

Cela fonctionne presque ok. La chose est ... l'effet n'est pas lisse. Je veux dire, d'abord, il fait disparaître le contenu A, puis il reste vide, puis il se fane contenu IN B. B.

Ce que je voudrais est de faciliter l'effet de sorte que, alors qu'il est en train de disparaître vraiment près de la fin, il commence à s'estomper pour que l'effet soit lisse.

Comment cela peut-il être réalisé en ce qui concerne le code ci-dessous?

Merci beaucoup à l'avance, MEM

Répondre

5

Essayez ceci:

$(function() { 
    $('.ajaxloader').click(function(event) { 
     var target = $(this).attr('href'); 
     window.location.hash = target; 
     $.ajax({ 
      url: target, 
      success: function(data) { 
       $('#conteudoInscricao') 
        .fadeOut('slow', function() { 
         $(this).html(data).fadeIn('slow'); 
        }); 
      } 
     }); 
     return false; 
    }); 
}); 

Ainsi, l'effet se produira seulement après avoir récupéré vos données, évitant ainsi tout intervalle de temps d'attendre la réponse de données.

+1

Vous devrez mettre en file d'attente votre appel '.html()'. À l'heure actuelle, même s'il est en deuxième position, il s'exécutera immédiatement. – user113716

+0

@patrick dw - Comment mettre en file d'attente le fichier .html()? – MEM

+0

@MEM - Si @dubrox ne se met pas à jour dans quelques minutes, je mettrai à jour sa réponse en bas. – user113716

0

Au moment il ne sera pas, parce que le fadeIn ne commencera pas jusqu'à ce que le fadeOut a fini!

+1

Et ce serait un commentaire, plutôt qu'une * réponse *, sûrement? –