jquery mousewheel插件:如何每次滚动仅触发一个功能

发布于 2024-10-10 15:24:24 字数 583 浏览 7 评论 0原文

我正在使用 moushweel 插件,因为我希望我的用户每次向上或向下滚动时都会触发一个操作,但我不想多次触发(如果你有一个苹果魔术鼠标,那就更糟糕了,因为太敏感了)

任何想法怎样预防呢?

这是代码

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别挽留 2024-10-17 15:24:24

您可以尝试使用 window.setTimeout。也许通过拉出嵌套函数并使用带有计时器的代理函数来实现。示例:

var timer; 

function proxyFunction(){
  clearTimeout(timer);
  timer = setTimeout("mouseWheelAction", 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.

〃温暖了心ぐ 2024-10-17 15:24:24

有病,明白了。
如果您正在内部运行动画,只需在其前面添加 .stop()
所以它会读

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

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

$('#findme').stop().animate(...);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文