2010-03-01 2 views
0

i ont cet élément auquel divers événements de modification sont appliqués comment puis-je déclencher ma propre fonction après tous les événements de changement ont eu lieu dans Mootoolsen Mootools: appeler une fonction après tous les événements sur un élément est terminé

un échantillon scénario est une liste déroulante

$ ('ddl'). addEvent ('changement', function() {// certains appellent ajax passe ici et que je ne peux pas affecter // que la page est généré de cette manière });

je veux maintenant appeler ma fonction juste après l'événement de changement se fait, mais en ajoutant un autre événement de changement ne fera pas que je crois que les événements sont exécutés async

Répondre

0

passe sur une fonction de rappel par la onComplete du ajax qui vous référencez.

par exemple:

$("ddl").addEvents({ 
    change: function() { 
     new Request({ 
      method: "get", 
      url: "somefile.php", 
      onComplete: function() { 
       // run your next stuff from within here, referencing 
       // this.response.text or whatevever and call up another function. 
      } 
     }).send("action=checkuser&id="+this.get("value").trim()); 
    } 
}); 

il y a aussi la classe de la chaîne - http://mootools.net/docs/core/Class/Class.Extras#Chain mais que vous avez des choses async passe, vous avez vraiment besoin de l'onComplete sur la demande.

+0

@Dimitar, merci pour l'astuce mais comme je l'ai noté (peut-être pas assez clairement) dans ma question, je ne peux pas affecter comment l'événement est ajouté à $ ('ddl'), mais aurait encore besoin de le faire après change event already added –

+0

Si c'est le cas, vous n'êtes pas en bonne position. En fait, comme vous l'avez souligné à juste titre, l'ajout d'un nouvel événement de changement est asynchrone par rapport à l'événement existant. votre seule option est, si la méthode Request est recyclée, c'est-à-dire que l'instance est stockée dans une variable accessible à partir d'une portée externe, vous pouvez ajouter un second événement de changement que 'addEvent'' onComplete' sur l'instance de Request pour passer ça vous revient. sinon, vous devez faire une boucle qui vérifie le résultat de la requête through() .periodical (nnn), disons toutes les 50ms jusqu'à ce que vous soyez certain que c'est fait avant d'exécuter votre prochain bloc de code. –

+0

voici un exemple de ce qui précède: http://www.jsfiddle.net/9ZJst/ sinon, voici comment vous pouvez le réparer en utilisant des vérifications périodiques d'un exemple de changement de contenu d'une couche (grâce à la mise à jour ajax) - http://www.jsfiddle.net/q6rcP/ bonne chance –