首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >左右轮旋转的水平滚轮事件

问左右轮旋转的水平滚轮事件
EN

Stack Overflow用户
提问于 2013-08-13 07:17:12
回答 1查看 4.7K关注 0票数 4

我正在使用jQuery鼠标轮插件,以激发不同的行动,每左和右轮轮。

苹果魔术鼠标水平滚动具有相同的效果,大多数笔记本电脑触控板,你用两个手指滚动页面左右。

而左右滚动的动作会在历史上来回触发页面。这发生在所有主要浏览器(Safari、Chrome、Opera和Firefox)中。

这就是为什么我需要preventDefault滚动只在水平(DeltaX)滚动。

我不能禁用默认水平旋转而不禁用垂直。

这里有一个小提琴复制问题,请访问它,并启动您的水平鼠标轮或触控板水平滚动。

http://jsfiddle.net/YfwXw/

代码语言:javascript
复制
$(document).mousewheel(function(event, delta, deltaX, deltaY) {
    if (deltaX > 10){
        $(".square").addClass("animation");
    }else if(deltaX < -10){
        $(".square").removeClass("animation");
    }
    if (deltaY != 0){
        //Anything that makes vertical wheelscroll keeps normal
    }
    // I have to preventDefault only the horizontal scroll, otherwise page will go back or go forward in history
    event.preventDefault();
});

您可以看到,我在代码中添加了一些注释,以帮助您更好地理解我的问题。

基本上,我需要的是一些东西,以preventDefault水平车轮的行动,并保持默认的垂直轮。

超过30个小时寻找解决方案,但没有成功,所以我会感谢任何帮助,我现在真的没有选择。

新的小提琴与溶液99%的基础上,尼格伦答案。

http://jsfiddle.net/9VbgF/

代码语言:javascript
复制
if (deltaY == 0){
    event.preventDefault();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-13 07:28:43

小提琴:http://jsfiddle.net/YfwXw/1/

您正在对所有鼠标轮事件执行preventDefault操作。将它放在if语句中,这样它就能工作了:

代码语言:javascript
复制
if (deltaY != 0){
    // Anything that makes vertical wheelscroll keeps normal
} else {
    // Only prevent if scroll is not vertical
    event.preventDefault();
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18202892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档