2010-07-26 6 views
0

J'ai une page HTML avec quelques div cachés avec display:none; que je voudrais pouvoir .fadeIn() et .fadeOut() en remplaçant l'un avec l'autre.jQuery - .fadeIn() et .fadeOut() - permutation DIVs

J'ai actuellement obtenu une configuration de liaison qui devrait le faire, voici le Javascript que je suis en train:

$('#footer a').click(function() {     
    $('#content > *').fadeOut('fast', function(){ 
     $('#contact').fadeIn('slow'); 
    }); 
    return false; 
}); 

Et voici une idée rapide de la mise en page HTML:

<html> 
<head></head> 
<body> 
<div id="content"> 
<div id="contact"></div> 
<div id="about"></div> 
<div id="main"></div> 
</div> 
</body> 
</html> 

Donc, j'ai le .fadeIn() comme un rappel au .fadeOut(), mais je vois toujours un flash de l'ancien contenu au moment où le nouveau contenu est en train de disparaître! Sans parler de toutes sortes d'autres bizarreries telles que jQuery n'étant pas appliqué au HTML externe que j'insère avec .load(), mais c'est pour un autre post je suppose.

Répondre

0

mais je vois encore un éclair de l'ancien contenu au moment où le nouveau contenu est en fondu!

qui est le plus probablement à cause de rappel à fadeOut, essayez ceci:

$('#footer a').click(function() {     
    $('#content > *').stop().fadeOut('fast'); 
    $('#contact').delay(1000).fadeIn('slow'); 
    return false; 
}); 
+0

Merci pour la réponse. J'ai essayé de retirer le .fadeIn() du rappel, mais en vain. J'ai pensé qu'il serait préférable de l'avoir dans le rappel de toute façon, juste pour s'assurer que le contenu est chargé avant d'être affiché. C'est tellement simple mais ça ne marche pas. Le plus frustrant de tous les problèmes! – Benji

+0

@BenjiBee: J'ai modifié mon code, essayez avec ça s'il vous plaît. – Sarfraz

+0

Cela fonctionne vraiment, il ne cache pas le saut, mais il semble que ce ne serait pas la meilleure solution de contournement, non? Je veux dire, avec des milliers d'articles sur le web sur le rasage en millisecondes de votre script, il semble un peu idiot d'ajouter une pause d'une seconde à cause de ce qui semble être un petit problème! Je pense que je peux m'attendre à trop de commandes jQuery intégrées. Un peu trop optimiste ou simpliste dans mon approche? – Benji

Questions connexes