gpt4 book ai didi

javascript - 如何让鼠标滚轮事件在 jQuery 中只触发一次?

转载 作者:搜寻专家 更新时间:2023-11-01 04:43:24 26 4
gpt4 key购买 nike

因此,每次用户通过鼠标滚轮向上或向下滚动时,我只想触发一次函数。请参阅:jsFiddle Demo .问题是即使我有 e.preventDefault(),该函数仍会触发多次。

目标是让函数在用户向上或向下滚动时仅触发一次。类似于此site .

这是我目前的代码:

var sq = {};
sq = document;
if (sq.addEventListener) {
sq.addEventListener("mousewheel", MouseWheelHandler(), false);
sq.addEventListener("DOMMouseScroll", MouseWheelHandler(), false);
} else {
sq.attachEvent("onmousewheel", MouseWheelHandler());
}

function MouseWheelHandler() {
return function (e) {
var e = window.event || e;
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
if (delta < 0) {
/* Scroll Down */
e.preventDefault();
console.log("Down. I want this to happen only once");

} else {
/* Scroll Up */
console.log("up. I want this to happen only once");
e.preventDefault();
}
return false;
}
return false;
}

最佳答案

This对我有帮助:

var isMoving=false;

$(document).bind("mousewheel DOMMouseScroll MozMousePixelScroll", function(event, delta) {
event.preventDefault();
if (isMoving) return;
navigateTo();
});

function navigateTo(){
isMoving = true;
setTimeout(function() {
isMoving=false;
},2000);
}

基本上,您有一个 isMoving 变量,该变量的设置取决于您的动画或您所做的任何事情是否在进行中。即使用户在一次“轻弹”中使用鼠标滚轮滚动多次,该函数也只会触发一次。

关于javascript - 如何让鼠标滚轮事件在 jQuery 中只触发一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19123288/

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