2010-03-18 3 views
1

J'ai du mal à comprendre pourquoi ma fonction est appelée deux fois. J'essaie de détecter quand un bouton radio est appelé (intRev_yes), vérifiez si un div est vide, faites glisser une autre div puis appelez une fonction custome qui crée dynamiquement un champ de date.SlideDown puis appel de la fonction personnalisée

if(this.id=="intRev_yes"){ 
if($('div#mainField').is(':empty')){ 
    $('.intRevSections').slideDown('slow',function(){ 
    current=-1; 
    addIrField(); 
    }); 
} 
} 

Quand j'alerter à chaque étape, après avoir obtenu à la fin (à savoir addIrField()), le script semble revenir à la section slideDown() et rappelle addIrField(). Je ne peux pas comprendre pourquoi, il n'y a pas de boucles. current est utilisé comme index pour le champ de date.

Répondre

1

Un autre cas serait:

Si vous avez deux éléments ayant le nom de classe .intRevSections slideDown courrait deux fois, et le rappel serait le feu deux fois ...

Hope this helps, Sinan.

0

Sinan a déjà découvert le problème, mais n'a pas posté de réponse. la réponse est:

Découvrez pourquoi vous avez deux divs (si vous les créez de JS l'autre fonction peut être exécutée deux fois aussi)

Vous pouvez également fixer le code afin qu'il utilise un seul div même si vous avez deux d'entre eux

$('.intRevSections:first').slideDown('slow',function(){ 
    current=-1; 
    addIrField(); 
    }); 
0

essayez ceci:

if (this.id == "intRev_yes") { 
     if ($('div#mainField').is(':empty')) { 
      $('.intRevSections').slideDown('slow', function(event) { 
       event.stopPropagation(); 
       current = -1; 
       addIrField(); 
      }); 
     } 
    } 
0

Jquery complet travaillé pour animer moi

$('.intRevSections:first').slideDown('slow',function(){ 
    complete: addIrField(); 
}); 
Questions connexes