滾動鼠標滑輪,每次向下滾動要輸出好多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 關注
- 2744 瀏覽
添加回答
舉報
0/150
提交
取消
