如何让滚轮滑动一次只执行一次事件。

同样的问题,就是窗口多次调整后只允许触发一次事件,且延迟一段时间执行,如何解决。

只需要在事件开头加上clearTimeout即可,每次滑动时都清除排队执行的前面等候事件,以最后一次添加的事件为主。

var scrollEle = document.getElementById("inner");
var time;
var data;

scrollEle.onmousewheel = function(e)
{
clearTimeout(time);
time = setTimeout(function()
{
if(e.wheelDelta > 0)
{
if(scrollEle.scrollTop >= 400)
{
data = 0;
(function move()
{
data++;
scrollEle.scrollTop-=20;
if(data < 20)
{
setTimeout(move,16);
}
})();
}
}
else
{
if(scrollEle.scrollTop <= 800)
{
data = 0;
(function move()
{
data++;
scrollEle.scrollTop+=20;
if(data < 20)
{
setTimeout(move,16);
}
})();
}
}
},300);
e.preventDefault();
};

函数节流与函数防抖的分析: https://juejin.im/entry/58c0379e44d9040068dc952f

转载于:https://www.cnblogs.com/cheeseCatMiao/p/7867072.html

如何在多次触发事件时只执行一次?(函数防抖)相关推荐

  1. css 页面从左侧向右滑入,动画只执行一次

    简单实现了页面进入时的动画: (1)从左侧滑入: (2)只执行一次. <template><div class="big_screen_contant">& ...

  2. Go的sync.Once(三):once.do(函数名)  函数只执行一次

    Once once.do(函数名)  函数只执行一次!执行一次后,其他协程不执行了 // 用once可以保证上面的oncebody被执行一次 package mainimport ("fmt ...

  3. 避免showModalDialog打开的窗口Page_Load只执行一次

    当showModalDialog打开的窗口Page_Load只执行一次,导致 if (!IsPostBack){} 中代码没有执行,查了相关资料,原因在于第一次之后加载都是从缓存中直接获取之前的页面, ...

  4. php多个请求只执行一次,php使用redis的blPop/brPop,一台服务器多个并发,也只能一次一次执行?...

    服务器是使用 nginx + php-fpm 的架构,redis用的是connect来连接,每个网络请求应该都会有单独的 php-fpm 进程.我写了一个循环,每次循环都有 blPop/brPop 和 ...

  5. vue animate bounceInRight 只执行一遍

    touchMove 中左滑 添加bounceInRight ,动画只执行一遍,或者只有某个有动画 解决:第一步:数据出现比动画要慢 在touchEnd中增加延迟,把类名置位空 第二步:把增加bounc ...

  6. python 为什么只执行一次_python只执行一次

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! #!usrbinpython #coding=utf-8 created on ...

  7. 开启Thread线程只执行一次

    代码如下 private static Thread mTaskThread = new Thread(new Runnable() {@Overridepublic void run() {coun ...

  8. ansible 命令只执行一次

    RUN ONCE 通过run_once: true来指定该task只能在某一台机器上执行一次. 可以和delegate_to 结合使用 - command: /opt/application/upgr ...

  9. Android AlarmManager设置多个定时事件时只最后一个有效问题解决

    最近用到了AlarmManager,遇到了问题,当我设置多个定时器时,发现只有一个起作用,百思不得其解,后来在网上找到了原因,把人家的解决办法贴上: AlarmManager的常用方法有三个: (1) ...

  10. shell 脚本中 while 只执行一次

    实例代码 while read line ; do ssh -p20002 $line -o StrictHostKeyChecking=no xxxxxxxxx done < ip.txt w ...

最新文章

  1. 2014年最值得关注的六大趋势
  2. 2019最全Python入门学习路线,绝对是最全
  3. system(“”start calc“”)
  4. MathType 在Word中的应用
  5. smarty的配置与安装
  6. bzoj1088 [SCOI2005]扫雷Mine
  7. YYKit 常见用法总结
  8. linux安装命令自动运行y,在Linux上安装Gnome Tweak以在Gnome Shell上自动启动程序
  9. 谈谈微信小程序仿网易云音乐有关播放的那些事儿
  10. php ajax 考试倒计时,ajax实现在线考试倒计时
  11. 插件用法--视频播放video.js
  12. Python——河神小游戏
  13. Visual Studio设置release版本可调试
  14. springboot大学生青年志愿者管理的设计与实现毕业设计源码101605
  15. html5页面打不开原因,有网但是网页打不开是什么原因(原因及2种解决方法)
  16. web前端 html5 直播功能开发
  17. MYSQL SELECT INTO临时表
  18. 自己整理的小学教师资格证结构化面试题分享
  19. Pktgen-DPDK使用说明
  20. 万年日历思路加完整代码

热门文章

  1. 防火墙之iptables
  2. MySQL技术内幕 InnoDB存储引擎【二】后台线程
  3. sql server 安装时提示要重启
  4. Spring Data Rest如何暴露ID字段
  5. JavaScript中charCodeAt函数
  6. The method getContextPath() is undefined for the type ServletContext
  7. 【转】20个Java 代码生成器
  8. 简单的Java串口通讯应答示例
  9. window命令行启动Mysql并安装服务
  10. js 定义函数的几种方法 以及如何调用