Problem til Funktion wartet länger ausgeführt wird, bevor er versucht, wieder auszuführen
-
03-07-2019 - |
Frage
Ich bin mit dem $ (Fenster) .scroll (); eine Funktion, um anzugeben, für sein rufen, wenn der Benutzer einen Bildlauf zu nahe an der Ober- oder Unterseite.
Die Funktion nimmt einen zweiten auszuführen, und wenn sie Scrollen fortsetzen, führt er mehrere Male, bevor der erste selbst beendet hat.
Gibt es eine Möglichkeit, die Funktion starten lassen kann ausführen und dann die $ sagen (Fenster) .scroll () -Funktion, die es warten muss, bevor diese Funktion wieder ausgeführt wird?
Lösung
Sie könnten einen boolean gesetzt, dass Sie bereits Scroll-Position Überprüfung:
checkingPosition = false;
$window.scroll(function() {
if(checkingPosition) return;
checkingPosition = true;
//do stuff
checkingPosition = false;
});
Andere Tipps
ich so etwas tun würde Umfang Fragen / Verwirrung, indem die Daten in ein Objekt einkapseln ... in diesem Fall das jQuery-Objekt (auf dem Fensterelement) zu vermeiden:
$(function() {
$(window).data('checking_scroll',false);
$(window).scroll(function() {
if($(this).scrollTop() >= 200 /* or whatever... */) {
if($(this).data('checking_scroll') === true) {
return false;
} else {
whatever_function();
}
}
});
});
function whatever_function() {
$(window).data('checking_scroll',true);
// do all your stuff...
$(window).data('checking_scroll',false);
}
... aber das ist nur meine Meinung.