Problem til Funktion wartet länger ausgeführt wird, bevor er versucht, wieder auszuführen

StackOverflow https://stackoverflow.com/questions/822653

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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top