jQuery Tools Scrollable with Mousewheel - scroll ONE position and stop

Я использую bind/unbind для прокрутки мышиного колеса, основываясь на этом ответе SO:

Jquery, отвязать событие mousewheel, затем снова привязать его после завершения действий?

Я туннелирую вверх по дереву событий от дельты, чтобы нацелиться только на значения X мышиного колеса. Все работает хорошо. Проблема, которую я пытаюсь решить: Я хочу просто прокрутить вперед/назад ОДНУ панель, а затем остановить прокрутку. В настоящее время я отвязываю событие колеса мыши сразу после перемещения, и это эффективно останавливает прокрутку... но отвязка события колеса мыши также перегружает страницу. Мне нужно, чтобы я мог определить направление по самому первому значению deltaX, затем сделать перемещение и перестать слушать. Нужно ли мне искать ответы в автопрокрутке? Привязка/отвязка выглядит неуклюже, но я не могу понять, как отвязаться после одного движения и при этом иметь возможность прокрутки после завершения этого движения. Вот моя функция mousewheel:

function mouseHandler(event, delta) {
$('.homeScrollable').bind('mousewheel', mouseHandler);

var deltaX = event.originalEvent.wheelDeltaX;
//console.log(event.originalEvent.wheelDeltaX);

if(deltaX <= 0) {
    //move forward 1 screen and stop
    scrollapi.move(1);
    $('.homeScrollable').unbind('mousewheel', mouseHandler);
} else if(deltaX > 0) {
    //move backward 1 screen and stop
    scrollapi.move(-1);
    $('.homeScrollable').unbind('mousewheel', mouseHandler);
}   
event.preventDefault();

// Rebind mousewheel event:
$('.homeScrollable').bind('mousewheel', mouseHandler);     };

Я также рассматривал возможность установки таймера, а-ля:

jquery mousewheel plugin: how to fire only one function every scroll

что казалось невероятно многообещающим, но нет. Вот страница плагина для этого парня: http://brandonaaron.net/code/mousewheel/docs

Спасибо, что проверили.

7
задан Community 23 May 2017 в 12:16
поделиться