滾動鼠標滑輪,每次向下滾動要輸出好多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條經(jīng)驗 獲得超191個贊
??var?a=0;??????//本次的getTime() ??var?b=0;??????//上一次的getTime() ??var?flag=5;???//設定一個判斷變量,保證在條件下console.log只執(zhí)行一次 $(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以內(nèi),可以視作在連續(xù)滾動 ????????if(delta<0?&&?delta!=flag){????//保證delta只執(zhí)行一次,連續(xù)滾動中第二次滾動,delta==flag,即不成立 ????????????console.log("1") ????????????flag=delta??????????????? ????????}else?if(delta>0?&&?delta!=flag){ ????????????console.log("2") ????????????flag=delta ????????}; ????}else{???????????????????//非連續(xù)滾動下,即getTimer差距300以上 ????????if(delta<0){ ????????????console.log("1") ????????flag=delta????????????????????????//防止等待時間過長出現(xiàn)2次 ????????}else{ ????????????console.log("2") ?????????flag=delta ????????}; ????}; });
你看下是不是這種效果,這里寫的意思是,當鼠標滾軸連續(xù)滾動時(每次滾動間隔300ms以內(nèi)),只顯示1次console.log,如果鼠標慢慢滾動(每次滾動間隔300以上),則每次滾動都顯示console.log,300這個數(shù)可以改
- 3 回答
- 0 關注
- 2693 瀏覽
添加回答
舉報
0/150
提交
取消