Плагин jquery mousewheel: как запускать только одну функцию при каждой прокрутке

я использую плагин moushweel, потому что я хочу, чтобы мой пользователь запускал действие каждый раз, когда он прокручивается вверх или вниз, но я не хочу, чтобы у вас было несколько срабатываний (если у вас есть мышь Apple Magic Mouse, это еще хуже, потому что она слишком чувствительна)

любая идея о том, как предотвратить это?

это код

jQuery(function($) {
    $('div.mousewheel_example')
        .bind('mousewheel', function(event, delta) {
            var dir = delta > 0 ? 'Up' : 'Down',
                vel = Math.abs(delta);
            $(this).text(dir + ' at a velocity of ' + vel);
            return false;
        });
});

это страница плагина http://brandonaaron.net/code/mousewheel/demos


person Francesco    schedule 04.01.2011    source источник


Ответы (2)


Вы можете попробовать поиграть с window.setTimeout. Возможно, вытащив свою вложенную функцию и используя что-то прокси-функцию с таймером. Пример:

var timer; 

function proxyFunction(){
  clearTimeout(timer);
  timer = setTimeout("mouseWheelAction", 1);
}

Это не остановит срабатывание события, но остановит выполнение вашей функции каждый раз, когда событие срабатывает.

person BernardMarx    schedule 04.01.2011

Зик, понял. Если вы запускаете анимацию внутри, просто предварите ее .stop(), чтобы она читалась

$('#findme').stop().animate(...);
person AKnox    schedule 11.03.2011