2010-09-27 20 views
1

Je sais comment faire avecAfficher le chargement GIF dans jQuery sans AJAX?

$(gif).show(); 
$.post(action, data, function(result) { $(gif).hide(); }); 

// using ajaxStart and ajaxStop is a better way too 

Mais, je ne sais pas comment le faire sans utiliser après, je tryed

$(gif).show(); 
doAction(); // No post... 
$(gif).hide(); 

Le problème est, alors que la fonction est en cours d'exécution doAction la $ (gif) n'est pas visible .... I tryed avec les délais d'attente trop, mais le problème est que se termine avant ou après selon la doAction() durée ...

+0

Cela aide vraiment ** si vous nous dites ce que 'doAction()' ** est ** et pas ce qu'il n'est pas. – Quentin

+0

doAction() fait n'importe quoi ... par exemple, une recherche dans une liste d'éléments –

Répondre

1

cela devrait fonctionner, si tout doAction() est synchrone.

Si ce n'est pas le cas, vous devrez appeler la méthode hide dans un rappel qui se déclenche lorsque l'opération (quelle qu'elle soit) se termine.

0

$ (gif) .hide() peut se déclencher pendant que votre doaction effectue un appel ajax (recherche) par exemple, ce qui prend du temps.

Le but de placer la fonction de cacher après la fonction (résultat) est de sorte qu'il est seulement appelé quand votre appel d'ajax revient avec les résultats.

Si vous ne voulez pas dépendre d'ajax complete pour montrer ou cacher votre chargeur, vous pouvez mettre vos résultats sur un calque DIV qui couvre le chargeur. (z-index plus élevé)