前端优化之节流防抖

节流

  • 下方法可简便的阻止click事件多次发生,但要想再使按钮可用,要页面刷新。


        var sum = 0;
        //方法一
       $("#btn").click(function(){
           sum++;
           console.log("点击了"+sum+"次");
            $(this).unbind("click");
       });
       //方法二
        $("#btn").one("click",function(){
           sum++;
           console.log("点击了"+sum+"次");
        });
    
  • 下方法可在一定时间内对按钮点击事件进行节流,适用于大多数按钮防止多次点击的情况

function limitFun(fun, limitTime) {
			//不传limitTime默认间隔1s
			limitTime = limitTime || 1000;
			return function (e) {
				var lastTime = $(this).data('lastTime');
				//var nowTime = e.timeStamp;  有兼容问题
                var nowTime = Date.now() || new Date().getTime();
				//如果是第一次点击或最后一次事件触发的时间戳减去上一次事件发生的时间戳大于limitTime时,触发函数
				if (!lastTime || nowTime - lastTime > limitTime) {
					fun.call(this, e);
					$(this).data('lastTime', nowTime);
				}
			}
		}

		$("#btn").click(limitFun(function () {
			console.log(111);
		}, 1000));

防抖


		var timer = null;
		// 给页面绑定onscroll事件,该事件为频发事件
		document.body.onscroll = function () {
			// 根据页面卷动值位置,判断是否触发事件
			var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
			if (scrollTop >= 700) {
				clearTimeout(timer);
				timer = setTimeout(function () {
					console.log("事件发生");
				}, 200);
			}
		}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值