Is there a vertical scroll event in jQuery

2019-01-19 13:40发布

问题:

I have a function that I bound with scroll() event, but the fact is I want the function to be triggered only in case of vertical scroll ( I have some horizontal scroll too).

I didn't see such possibility in the documentation of jQuery, might there be a trick to do so?

回答1:

There isn't a specific event, but you could test the .scrollLeft() position to see if it has moved from a previously stored position.

Something like this:

var prevLeft = 0;
$(document).scroll( function(evt) {
    var currentLeft = $(this).scrollLeft();
    if(prevLeft != currentLeft) {
        prevLeft = currentLeft;
        console.log("I scrolled horizontally.");
    }
});
  • http://api.jquery.com/scrollLeft/


回答2:

You can also use .scrollTop to make a custom vertical scroll event.

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

Jquery .scrollTop()



回答3:

This should work:

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


标签: jquery scroll