gpt4 book ai didi

jQuery鼠标滚轮插件定制

转载 作者:行者123 更新时间:2023-12-03 23:06:46 25 4
gpt4 key购买 nike

我有一个全屏 slider ,并且希望能够使用鼠标滚轮进行导航。为了检测鼠标滚轮事件,我认为 jQuery mousewheel插件应该是最好的选择。

我能够包含它和消防功能。但我无法(并且没有找到任何资源)按照我想要的方式配置它。

我想检查一定数量的滚动像素。因此,例如,如果鼠标滚轮尝试向上滚动 20 像素,我想触发一个函数,或者向下滚动 20 像素以触发另一个函数。

​$(document).ready(function(){
$('body').bind('mousewheel', function(e){
if(e.originalEvent.wheelDelta /120 > 0) {
alert('Wait! I fire way too often!');
}
else{
alert('We are going down, way too msuch alerts!');
}
});
});

JS FIDDLE (向上/向下滚动)

最佳答案

如果我正确理解您的问题,您会发现事件触发得太频繁。这里的问题是,对于任何给定的滚动操作,该事件都会触发多次。如果您在浏览器中打开开发者控制台并执行 console.log(e.originalEvent.wheelDelta),您就可以看到这一点。这可能会将一个大滚动分解为几个小滚动事件,从而偏离您想要的行为。我处理这个问题的方法是使用一个变量来保存滚动增量:

$(document).ready(function(){   
var scrollPixels = 0; // variable to store scroll delta

$('body').bind('mousewheel', function(e){
// increment/decrement scroll delta
scrollPixels += e.originalEvent.wheelDelta;
console.log(scrollPixels);

if (scrollPixels < -20) {
scrollPixels = 0; // clear scroll delta
alert('Coming down!');
}
else if (scrollPixels > 20){
scrollPixels = 0; // clear scroll delta
alert('Coming up!');
}
});
});

然后,您可以在向上或向下警报触发后清除滚动增量。

JS Fiddle

您可能还希望将测试增加到 20 像素以上,因为大多数滚动都会触发此事件 - 20 像素仅约为 1/4 英寸。

希望有帮助。如果这不能解决您的问题,请随时评论我出错的地方。祝你好运!

<小时/>

更新地址评论:

您可以通过设置超时来等待滚动停止,该超时将在滚动停止执行后等待一小段时间(本例中为 250 毫秒)。我将逻辑移至此超时内,以便它仅在滚动停止后运行:

$(document).ready(function(){   
var scrollPixels = 0; // variable to store scroll delta
var scrolling; // timeout function var

$('body').bind('mousewheel', function(e){
// increment/decrement scroll delta
scrollPixels += e.originalEvent.wheelDelta;
console.log(scrollPixels);

clearTimeout(scrolling);
scrolling = setTimeout(function() {
console.log('stop wheeling! ', scrollPixels);
scrolling = undefined;

if (scrollPixels < -300) {
scrollPixels = 0; // clear scroll delta
alert('Coming down!');
}
else if (scrollPixels > 300){
scrollPixels = 0; // clear scroll delta
alert('Coming up!');
}

}, 250);
});
});

已更新JS Fiddle

关于jQuery鼠标滚轮插件定制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com