我正在使用jQuery鼠标轮插件,以激发不同的行动,每左和右轮轮。
苹果魔术鼠标水平滚动具有相同的效果,大多数笔记本电脑触控板,你用两个手指滚动页面左右。
而左右滚动的动作会在历史上来回触发页面。这发生在所有主要浏览器(Safari、Chrome、Opera和Firefox)中。
这就是为什么我需要preventDefault滚动只在水平(DeltaX)滚动。
我不能禁用默认水平旋转而不禁用垂直。
这里有一个小提琴复制问题,请访问它,并启动您的水平鼠标轮或触控板水平滚动。
$(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%的基础上,尼格伦答案。
if (deltaY == 0){
event.preventDefault();
}发布于 2013-08-13 07:28:43
小提琴:http://jsfiddle.net/YfwXw/1/
您正在对所有鼠标轮事件执行preventDefault操作。将它放在if语句中,这样它就能工作了:
if (deltaY != 0){
// Anything that makes vertical wheelscroll keeps normal
} else {
// Only prevent if scroll is not vertical
event.preventDefault();
}https://stackoverflow.com/questions/18202892
复制相似问题