Partage
  • Partager sur Facebook
  • Partager sur Twitter

Attendre la fin d'execution d'une fonction jquery

    10 février 2011 à 15:01:39

    Bonjour, merci de consacrer un peu de votre temps à mon problème.

    J'ai un script Jquery qui doit faire apparaitre autant de menu déroulant que je souhaite.

    Je m'explique :
    La partie saisie à la main de mon script est bon, c'est juste la saisie automatique qui pose problème.

    J'ai une fonction Jquery qui ressemble à ça :
    FonctionJquery()
    {
      for (var i = 0; i < Tab.length; i++)
      {
        var j = i + 1;
        FonctionQuiDeroulePremierMenu(i); //Affiche le deuxieme menu déroulant
        FonctionQuiDerouleDeuxiemeMenu(i); //Affiche le bouton 
        FonctionQuiAppuieSurBoutton(j); //Affiche le premier menu déroulant
      }
    }
    


    Mon problème,
    La boucle du for va trop vite pour mes fonction, en fait pour le premier tour du for ça va, mais après le for prend de vitesse mes fonctions
    Ce qui fait que quand je suis a i = 2 et que j'execute donc ma fonction(J = 2) mon menu déroulant(1) n'a pas encore apparue.

    J'ai essayé la fonction setTimeout() en augmentant proportionnellement le temps d'attente et la valeur du i.
    Mais je n'arrive pas au résultat voulu...

    Qu'aurez vous à me conseiller ?
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2011 à 20:17:57

      Plutôt que de nous donner une fonction qui ressemble à la tienne, donne-nous la tienne. Ce sera certainement plus clair que ton pseudo code...
      • Partager sur Facebook
      • Partager sur Twitter
        11 février 2011 à 10:53:11

        Il faut décompresser un petit peu ça fait pas de mal,je te conseille un bon bain d'eau chaude !!

        J'essai de simplifié les choses en affichant une fonction retaillé mais la voici :
        function MaFonction(Lescateg)
        {
          var ActivitesPrincipales = Lescateg.split('||');
          for (var k = 1; k < ActivitesPrincipales.length;k++)
          {
            var J = k-1;
            var SousActives = ActivitesPrincipales[J].split('[]');
          
            $("#activite"+k).trigger("change", [ SousActives[0] ]); 
            if ($("#activitebis"+k))
            $("#activitebis"+k).trigger("change", [ SousActives[1] ]);
            
            $("#bouton"+J).trigger("click");
          }
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          11 février 2011 à 19:19:00

          Est-ce que tu me traites de zip là ? o_O

          Sinon, si je comprends bien, ce sont les actions déclenchées par les triggers qui sont des animations...

          C'est embêtant... parce qu'au final tu n'as aucun contrôle sur les animations en question...

          Es-tu obligée de passer par les triggers ?
          • Partager sur Facebook
          • Partager sur Twitter
            12 février 2011 à 13:36:50

            Je ne te traite de rien du tout, juste que quand j'ai lu ta réponse, j'avais cru y voir une attaque envers mon pseudo code, mais bon je te comprend et merci de m'aider.

            Pour l'explication :
            Un utilisateur choisi ses menus à l'infinie et l'envoi par post,
            si il a mal saisie le formulaire je retourne sur la page où je déclenche la fonction ci-dessus

            Je me sent obligé de passer par les triggers car les fonctions que j'utilise sont liées les unes aux autres.

            Je te collerai le code plus tard, là je ne suis pas chez moi, merci.
            • Partager sur Facebook
            • Partager sur Twitter
              12 février 2011 à 14:22:50

              Ouais j'aimerais bien voir les événements qui sont placés à l'origine sur les activite, activiteBis et bouton...
              • Partager sur Facebook
              • Partager sur Twitter
                15 février 2011 à 9:24:31

                Salut,
                J'ai réussi à régler le problème, je m'étais trompé dans l'index du boutton, et j'ai mis des timeouts pour l'appel de fonctions dans les qu'elles j'appelle les fonctions d'origines.

                Merci beaucoup !
                • Partager sur Facebook
                • Partager sur Twitter

                Attendre la fin d'execution d'une fonction jquery

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown