前端 | 您所在的位置:网站首页 › js中的防抖和节流 › 前端 |
不折腾的前端,和咸鱼有什么区别 本篇博客,我们将探讨2个问题,click单双击问题及函数节流与防抖问题,其实都是关于click事件的探讨,当我们对一个按钮进行单击或者双击,或者多次点击,当我们频繁触发click事件时,这时就涉及到我们的函数节流与防抖问题。 单双击(仿双击)在js中,同一个功能块可能会遇到单击、双击事件两种事件,当我们执行双击事件时,同时也执行了2次单击事件。任何避免执行双击事件时,不执行单击事件。这时我们需要对单击事件进行延时,如果在此延时中又监测到单击事件,那么认为此两次单击属于一个双击事件,则只执行双击事件,并第一时间将延时定时器清理,以防止第二次单击生效。 具体代码如下: 方法一: 对单击事件进行延迟执行 var clickFlag = null;//是否点击标识(定时器编号) function doOnClick(...) { if(clickFlag) { //取消上次延时未执行的方法 clickFlag = clearTimeout(clickFlag); } clickFlag = setTimeout(function() { // click 事件的处理 }, 300);//延时300毫秒执行 } function doOnDblClick(...) { if(clickFlag) { //取消上次延时未执行的方法 clickFlag = clearTimeout(clickFlag); } // dblclick 事件的处理 }方法二: 利用仿双击原理 var lastClick = 0; function doClick(...){ var timeNow = new Date().getTime(); if(timeNow - lastClick let timer = null return function() { const context = this let args = arguments if(!timer |
CopyRight 2018-2019 实验室设备网 版权所有 |