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

馋奶兔 提交于 2020-01-01 14:21:04

问题


i'm using a moushweel plugin because i want my user to fire an action everytime it scroll up or down, but i dont want to have multiples fires (if you have a apple magic Mouse it is even worse because is too sensitive)

any idea on how to prevent it?

this is the code

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;
        });
});

this is the plugin page http://brandonaaron.net/code/mousewheel/demos


回答1:


You could try playing with window.setTimeout. Maybe by pulling out your nested function and using something a proxy function with a timer. Example:

var timer; 

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

This will not stop the event firing but it will stop your function from running everytime the event fires.




回答2:


Sicck, got it. If you are running an animation inside just preface it with .stop() So it would read

$('#findme').stop().animate(...);


来源:https://stackoverflow.com/questions/4596158/jquery-mousewheel-plugin-how-to-fire-only-one-function-every-scroll

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!