2009-04-06 8 views
1

Je crée un jeu en ligne en utilisant jQuery. En raison de beaucoup d'effet fondu pour les ordinateurs plus lents je l'ai fait une option qui définit jQuery.fx.off = true; qui a causé un problème avec ce code:jQuery sur les ordinateurs lents

$('<div>'+msg+'</div>').fadeOut(5000,function({$(this).remove()}).appendTo('#msg'); 

Ce message d'affichage de code dans la div #MSG, puis après un message de 5 secondes est parti. Il peut y avoir plusieurs messages et ils peuvent être ajoutés à tout moment. Lorsque jQuery.fx.off = true; message ne semble pas parce que fadeOut se fait instantanément :(Ce que je besoin est quelque chose comme $('#id').delay(5000).remove() quand fx.off est vrai.

que je cherchais dans l'aide de jQuery, mais rien trouvé.

Répondre

2

Cette peut ou ne peut pas être une solution acceptable à votre problème, mais vous pouvez créer une nouvelle

jQuery.fn.maybeFadeOut = function (time, fun) { 
    if (slowComputer) { 
    setTimeout(function() { 
     $(this).remove(); 
     if (fun) fun(); // Optionally run the callback function. 
    }, time); 
    return $(this); 
    } else { 
    return $(this).fadeOut(5000, function() { $(this).remove; }); 
    } 
}; 
+0

fonction JQuery appelé maybeFadeOut ou quelque chose. Il ne fonctionne pas, puisque $ (ce) en fonction setTimeout est probablement vide. – Thinker

+0

Je n'ai jamais testé le code moi-même, mais je suis à peu près sûr que si $ (this) est défini en dehors du setTimeout, il sera Je suis aussi défini dans setTimeout. C'est en fait une fonctionnalité dans de nombreux langages de programmation et est très utile en JavaScript en particulier. –

Questions connexes