2016-06-06 8 views
-1

Ich habe eine Liste von Eingaben (type = "radio") und ich mache eine Animation, wenn sie angeklickt werden, auch ich deaktiviere die Eingaben, während die Animation läuft.Wie kann ich eine Funktion (a) schreiben, die nach Abschluss eine andere Funktion (b) aufruft?

Wie kann ich mit dieser Funktion eine andere aufrufen, wenn sie fertig ist?

function animation(para1, para2, para3, para4) { 
    // calling a function to clear the animation for time before 
    // this gets called when a input is clicked to run a animation 
    // also hides inputs 
} 

Ich brauche irgendwie eine andere Funktion aufrufen, um die Eingaben wieder zu aktivieren, sobald die Animation abgeschlossen ist

+0

Sie können Versprechen verwenden. – Rajesh

+0

* "Wie kann ich eine Funktion (a) schreiben, die eine andere Funktion (b) aufruft, wenn sie abgeschlossen ist?" * -> 'function b() {}; Funktion a() {b(); }; ' –

+0

Wenn es fertig ist – edward

Antwort

-1

einen Blick auf Javascript callbacks haben.

Im Wesentlichen Sie eine Funktion als Parameter an anderen Funktion übergeben können, die sie dann ausführen kann

1

Sie eine Rückruffunktion müssen ... Dies ist ein Beispiel für Callback-Funktion

$("button").click(function(){ 
    $("p").hide("slow", function(){ 
     alert("The paragraph is now hidden"); 
    }); 
}); 
1

Es gibt ein Ereignis, bei dem die CSS-Animation endet. Und CSS-Animationen sind besser und schneller als jQuery-Animationen.

Sie können Ihre Animationen in CSS schreiben, jQuery verwenden, um Klassen festzulegen, die die Animation starten und dann auf ihr Ende warten.

Sehen, wie man detect end of CSS animation

$(".button").click(function(){ 
    $(this).addClass("animate"); 
    $(this).one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend", 
       function(event) { 
    // Do something when the transition ends 
    }); 
}); 
+0

Sie wissen nicht einmal, welche Art von Animation OP verwendet. Fragen Sie entweder nach Klärungen oder beantworten Sie keine schlechten Fragen basierend auf Annahmen. –

1

Entweder Rückrufe verwenden, die nur funktionieren Parameter sind und um für einige Zeit gewesen, wie so

function animation(para1, para2, para3, para4, callbackFn) { 
    //do the work 
    callbackFn(); //work is done, callback can be invoked now 
} 

oder betrachten promises verwenden, die Teil sind des ES6-Standards. Wenn Sie ES5 oder darunter verwenden, gibt es Bibliotheken, die ebenfalls Versprechungen machen können, wie zB Kris Kowal's Q

+0

// Arbeit ist erledigt, Callback kann jetzt aufgerufen werden. Ich weiß, dass dies das ist, was ich tun muss, ich muss wissen, wie es geht – edward

0

@Radek Pech - Danke, dass Sie mich in die richtige Richtung weisen. Ich habe das CSS-Animationstiming nicht berücksichtigt, wodurch es so aussah, als würde der Callback früher ausgelöst.

Verwandte Themen