Ich versuche, dass das Skript, wenn ein Benutzer bis zu einem bestimmten Punkt (1250px von oben) scrollt, eine Funktion "nur EINMAL" ausführt und der Benutzer dann bis zu einem weiteren Punkt von 1250px vom vorherigen Punkt (2500px von oben) weiter scrollt ) führt das Skript die Funktion EINMAL erneut aus.

Mein Skript führt die Funktion jedoch nach 1250 px weiter aus, und ich habe var current_post bereits um weitere 1250 hinzugefügt. Daher sollte var current_post zu diesem Zeitpunkt 2500 sein. Wenn der var-Offset bei 1600 liegt, sollte die Funktion nicht ausgeführt werden, sondern läuft weiter.

Javascript

$(window).scroll(function() {
    var offset = $(window).scrollTop();
    var current_pos = 1250;

    if(offset > current_pos) {
        current_pos += 1250;
        //do some function
   }
});

Bitte helfen Sie mir, meinen Fehler zu erkennen und mein Verständnis dafür zu korrigieren. Danke im Voraus.

0
Charas 10 Aug. 2015 im 12:53

3 Antworten

Beste Antwort

Das Problem ist, dass Sie jedes Mal, wenn das Ereignis ausgelöst wird, current_pos auf 1250 zurücksetzen. Sie können den aktualisierten Wert also nie verwenden.

Versuchen Sie, die Variable current_pos außerhalb des Ereignishandlers festzulegen, damit sie nicht bei jedem Ereignis 1250 neu zugewiesen wird.

var current_pos = 1250;
$(window).scroll(function() {
    var offset = $(window).scrollTop();

    if(offset > current_pos) {
        current_pos += 1250;
        //do some function
   }
});
2
musefan 10 Aug. 2015 im 09:57

Platzieren Sie var current_pos=1250 außerhalb Ihres scroll -Ereignisses wie folgt:

var current_pos = 1250; //paste it here

$(window).scroll(function() {
    var offset = $(window).scrollTop();
    if(offset > current_pos) {
        current_pos += 1250;
        //do some function
   }
});
2
Guruprasad Rao 10 Aug. 2015 im 09:56

Löschen Sie einfach die Variable:

var current_pos = 1250;
$(window).scroll(function() {
    var offset = $(window).scrollTop();

    console.log(offset);
    if(offset > current_pos) {
       current_pos += 1250;
        //do some function
        console.log(current_pos);
     }
 });

http://jsfiddle.net/sq32f7h8/

0
Marcos Pérez Gude 10 Aug. 2015 im 09:58