Есть ли событие вертикальной прокрутки в jQuery

У меня есть функция, которую я связал с scroll() событие, но дело в том, я хочу, чтобы функция срабатывает только в случае вертикальной прокрутки ( у меня тоже есть горизонтальная прокрутка).

Я не видел такой возможности в документации jQuery, может быть, есть трюк, чтобы сделать это?

3 ответов


нет определенного события, но вы можете проверить .scrollLeft() позиция, чтобы увидеть, если он переместился из ранее сохраненной позиции.

что-то вроде этого:

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

вы также можете использовать .scrollTop чтобы создать пользовательское событие вертикальной прокрутки.

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

С помощью jQuery .scrollTop()


Это должно работать:

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