2016-05-25 17 views
0

Ich habe eine Funktion, die Protokoll up beim Scrollen und down beim Scrollen loggen sollte.Scrollen nach oben löst sowohl nach oben als auch nach unten beim Scrollen

Scrollen funktioniert einwandfrei, aber beim Scrollen meldet die Konsole sowohl up als auch down.

Warum loggt man nicht nur beim Hochscrollen up, da es beim Scrollen nur down protokolliert? Diese

function scrollTest() { 

     var lastScrollTop = 0; 

     $(window).scroll(function(event) { 

      var st = $(this).scrollTop(); 

      if (st > lastScrollTop){ 
       console.log('down'); 
      } else if (st < lastScrollTop) { 
       console.log('up'); 
      } 

      lastScrollTop = st; 

     }); 

    }; 

$(window).on("scroll", function() { 

    scrollTest(); 

}); 

Antwort

1

Ändern Sie den Code zu

function scrollTest(){ 
      var lastScrollTop = $(window).scrollTop(); 
      $(window).scroll(function(event) { 

      var st = $(this).scrollTop(); 

      if (st > lastScrollTop){ 
       console.log('down'); 
      } else if (st < lastScrollTop) { 
       console.log('up'); 
      } 

      lastScrollTop = st; 

     }); 
      }   
    $(window).on("scroll", function() { 
      scrollTest(); 
    }); 

Die var lastScrollTop = 0 verursachte das Problem. Bedeutet nichts gegen die andere Antwort oder ihren Autor, ich fühle, dass Es ist im Allgemeinen eine schlechte Idee, eine globale Variable zu haben.

1

fix it:

var lastScrollTop = 0; 
function scrollTest() { 


    $(window).scroll(function(event) { 

     var st = $(this).scrollTop(); 

     if (st > lastScrollTop){ 
      console.log('down ' + st + " | " + lastScrollTop); 
      lastScrollTop = st; 
      return 0; 
     } 
     if (st < lastScrollTop) { 
      console.log('up ' + st + " | " + lastScrollTop); 
      lastScrollTop = st; 
      return 0; 
     } 
     }); 

    }; 

$(window).on("scroll", function() { 

    scrollTest(); 

}); 

Das Problem ist, dass var lastScrollTop = 0; wurde immer den Wert 0 auf jeder blättern ... here is the fiddle

Verwandte Themen