Ich habe die Seite so eingestellt, dass sie nach oben scrollt, wenn auf eine Schaltfläche geklickt wird. Aber zuerst habe ich eine if-Anweisung verwendet, um zu sehen, ob der obere Rand der Seite nicht auf 0 gesetzt wurde. Dann, wenn es nicht 0 ist, animiere ich die Seite, um nach oben zu scrollen.
var body = $("body");
var top = body.scrollTop() // Get position of the body
if(top!=0)
{
body.animate({scrollTop:0}, '500');
}
Der knifflige Teil ist nun, etwas zu animieren, NACHDEM die Seite nach oben gescrollt wurde. Mein nächster Gedanke ist also, herauszufinden, was die Seitenposition ist. Also habe ich das Konsolenprotokoll verwendet, um das herauszufinden.
console.log(top); // the result was 365
Dies gab mir ein Ergebnis von 365, ich schätze, das ist die Positionsnummer, an der ich kurz vor dem Scrollen nach oben war.
Meine Frage ist, wie kann ich die Position auf 0 setzen, so dass ich eine weitere Animation hinzufügen kann, die abläuft, sobald die Seite bei 0 ist?
Vielen Dank!
Zu diesem Zweck können Sie eine Callback-Funktion für den Animationsbefehl festlegen, die nach Abschluss der Bildlaufanimation ausgeführt wird.
Zum Beispiel:
var body = $("html, body");
body.stop().animate({scrollTop:0}, 500, 'swing', function() {
alert("Finished animating");
});
An der Stelle, an der sich der Warncode befindet, können Sie weiteres Javascript ausführen, um weitere Animationen einzufügen.
Außerdem ist die 'swing' dort, um die Lockerung zu setzen. Unter http://api.jquery.com/animate/ finden Sie weitere Informationen.
Versuchen Sie stattdessen dies:
var body = $("body, html");
var top = body.scrollTop() // Get position of the body
if(top!=0)
{
body.animate({scrollTop :0}, 500,function(){
//DO SOMETHING AFTER SCROLL ANIMATION COMPLETED
alert('Hello');
});
}
Dafür können Sie die Callback-Methode verwenden
body.animate({
scrollTop:0
}, 500,
function(){} // callback method use this space how you like
);