滚动鼠标滑轮,每次向下滚动要输出好多1,怎么确保不管滚多远都只输出一个1$(document).on("mousewheel DOMMouseScroll", function (e) { var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? 1 : -1)) || (e.originalEvent.detail && (e.originalEvent.detail > 0 ? -1 : 1)); if (delta<0) { console.log("1"); }else{ console.log("2"); } });
3 回答
已采纳
stone310
TA贡献361条经验 获得超191个赞
var a=0; //本次的getTime() var b=0; //上一次的getTime() var flag=5; //设定一个判断变量,保证在条件下console.log只执行一次 $(document).on("mousewheel DOMMouseScroll", function (e) { b=a; //b赋值为上一次的getTime() a=new Date().getTime(); //a赋值为本次的getTime() var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ?1 : -1)) || (e.originalEvent.detail && (e.originalEvent.detail > 0 ?-1 : 1)); if(a-b<=300){ //如果两次getTime()差距在300ms以内,可以视作在连续滚动 if(delta<0 && delta!=flag){ //保证delta只执行一次,连续滚动中第二次滚动,delta==flag,即不成立 console.log("1") flag=delta }else if(delta>0 && delta!=flag){ console.log("2") flag=delta }; }else{ //非连续滚动下,即getTimer差距300以上 if(delta<0){ console.log("1") flag=delta //防止等待时间过长出现2次 }else{ console.log("2") flag=delta }; }; });
你看下是不是这种效果,这里写的意思是,当鼠标滚轴连续滚动时(每次滚动间隔300ms以内),只显示1次console.log,如果鼠标慢慢滚动(每次滚动间隔300以上),则每次滚动都显示console.log,300这个数可以改
- 3 回答
- 0 关注
- 2617 浏览
添加回答
举报
0/150
提交
取消