因此,每次用户通过鼠标滚轮向上或向下滚动时,我只想触发一次功能。请参阅:jsFiddle 演示。问题是即使我有 e.preventDefault(),该函数仍然会触发多次。
目标是让函数在用户向上或向下滚动时仅触发一次。类似于这个网站。
这是我到目前为止的代码:
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;
}