2009-11-21 4 views
1

J'ai deux fonctions et un problème.Fonctions de mise en file d'attente et Ajax dans jQuery

hideTable(); 
ajaxCall(params); 

La fonction hideTable

function hideTable() { 
    if (effects) { 
     $('#jquerytable tbody').fadeOut(speed); 
    } 
} 

Je veux que la fonction ajaxCall à exécuter après la fonction hideTable (qui prend un peu de temps). La fonction showTable doit être exécutée après l'appel ajax. J'ai beaucoup essayé mais rien ne s'est bien passé pour moi. L'appel Ajax commence avant que la fonction hideTable soit terminée. Je pense que je pourrais utiliser la file d'attente jQuery mais je ne sais pas comment l'appliquer à ce problème. Par ailleurs, je ne veux pas utiliser une fonction de rappel parce que je veux réutiliser la fonction hideTable dans d'autres contextes.

Serait bien si vous pouviez m'aider.

Répondre

1

Les fonctions animer et masquer de jQuery ont des rappels que vous pouvez utiliser.

animate(params, [duration], [easing], [callback]) 
hide(speed, callback) 

Alors, quel est le code de hideTable? Utilise-t-il $(). Hide()? Dans ce cas, réglez la fonction de rappel pour être votre fonction ajax

+0

C'est une bonne réponse. Cependant, y a-t-il un autre sans rappel? – dominik

+0

C'est de loin la solution la plus simple. Si vous voulez réutiliser la fonction hidetable, passez simplement le callback en paramètre. – Nosredna

+0

Il y a beaucoup d'autres (moins souhaitable) était de résoudre le problème. Vous pourriez avoir une variable globale garder une trace de l'état de la table (cachée, animée, montrée). Bien sûr, vous utiliseriez le callback pour mettre à jour le global de l'animation au caché. – Nosredna

0

@nosredna réponse à utiliser callbacks est le chemin à parcourir, mais si vous voulez ne le faire avec la file d'attente jquery je vous suggère de regarder this answer à une question similaire

Questions connexes