2008-12-04 11 views
2

Avec ma jquery j'essaye de faire la transition d'un message à une fonction de chargement facile sur les yeux en animant l'opasity du message, en insérant le loading.gif et animer l'opacité. Il échoue.animer l'opacité, insérer le html, animer l'opacité dans

$('#powerSearchSubmitButton').click(function(ev) { 
    startLoad(); 
    return false; 
}); 
function startLoad() { 
    $('.message').each(function(i) { 
     $(this).animate({opacity: 0}, 500, function() { 
      $(this).html("<img src=\"/content/pics/loadingBig.gif\" alt=\"loading\" style=\"opacity:0\"/>"); 
      $(this).animate({opacity: 1},500); 
     }); 
    }; 
    return true; 
}; 

Quand je quitte le .html() appel, il fonctionne très bien (sauf l'image est pas là bien sûr, donc je pense qu'il est beacuse le code html n'est pas inséré avec l'opacité: 0; Mais quand je l'inséra avec style = « opacité: 0 » il ne peut pas disparaître en arrière ...

Qu'est-ce que je fais mal

Répondre

0

Appliquer l'animation à un conteneur à la place, ou utiliser la méthode Css()? pour définir l'opacité (les styles en-ligne peuvent interférer avec la capacité de jQuery à animer les propriétés correspondantes)

+0

l'animation est déjà sur un conteneur (div avec classe "message"). –

0

Ne donnez pas l'image style = "opacity: 0;" - il ne sera pas visible tant que son parent est caché, et, comme vous l'avez découvert, il restera à 0 opacité une fois que le parent sera de retour.

Vous pouvez également utiliser les fonctions fadeIn et FadeOut de jQuery au lieu d'animer manuellement.

+0

merci, fadeIn et fadeOut sont en effet exactement les mêmes. En interne, ils utilisent la même chose que je l'ai fait là-bas. –

2

Essayez ceci:

$(this).fadeOut(500, function() { 
    $(this).html("<img src='content/pics/loadingBig.gif' alt='loading'/>"); 
    }); 
$(this).fadeIn(500); 
+0

C'est presque exactement le code que j'utiliserais, sauf que j'ai eu des problèmes où le fadeIn() commence avant que le html interne ait été entièrement rendu. Pour résoudre ce problème, je place fadeIn() * dans la fonction de rappel de fadeOut(), immédiatement après la méthode .html(). –

+0

Oui, si vous vérifiez les réponses précédentes, vous pouvez voir que j'ai essayé. Il me donne toujours une charge dans le chargement gif dans tous les navigateurs, mais FF –