Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Jquery.scrollTop()

Ответ 3

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

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