2010-07-06 4 views
11

J'ai une fonction que je lie avec scroll() événement, mais le fait est que je veux que la fonction soit déclenchée seulement en cas de défilement vertical (j'ai aussi un défilement horizontal).Y at-il un événement de défilement vertical dans jQuery

Je n'ai pas vu une telle possibilité dans la documentation de jQuery, pourrait-il y avoir un truc pour le faire?

Répondre

11

Il n'y a pas d'événement spécifique, mais vous pouvez tester la position .scrollLeft() pour voir si elle a été déplacée d'une position précédemment enregistrée.

Quelque chose comme ceci:

var prevLeft = 0; 
$(document).scroll(function(evt) { 
    var currentLeft = $(this).scrollLeft(); 
    if(prevLeft != currentLeft) { 
     prevLeft = currentLeft; 
     console.log("I scrolled horizontally."); 
    } 
}); 
+0

Je ne sais pas pourquoi je ne pensais même pas de cela. Merci beaucoup c'est exactement ce que je cherchais. (J'ai juste utilisé scrollTop() à la place parce que cela correspondait à ma situation) –

+0

@Michael - De rien. : o) – user113716

0

Cela devrait fonctionner:

var prevLeft = 0; 
$(document).scroll(function(evt) { 
    var currentLeft = $(this).scrollLeft(); 
    if(prevLeft === currentLeft) { 
     console.log("I scrolled vertically."); 
    } 
    else { 
     prevLeft = currentLeft; 
    } 
}); 
3

Vous pouvez également utiliser .scrollTop pour faire un événement de défilement vertical personnalisé.

var prevTop = 0; 
$(document).scroll(function(evt) { 
    var currentTop = $(this).scrollTop(); 
    if(prevTop !== currentTop) { 
     prevTop = currentTop; 
     console.log("I scrolled vertically."); 
    } 
}); 

Jquery .scrollTop()

Questions connexes