【JS】在连续性监听事宜中,监听当前状况是不是变化

在许多时候,一系列事宜会触发的很快,在这类事宜中及时监听某个值的状况并在某个条件下实行其他操纵,无疑会使机能变得非常狼狈。

为了要领解说的简明易懂,我挑选jQuery的scroll事宜来表述。

var wh = $(window).height();
$(document).on('scroll',function() {
    var sh = $(document).scrollTop();
    if(sh<wh){
        switchBlur(0);//不隐约
      }else {
         switchBlur(10);//隐约
      }
});

如示例代码所示,每次监听到scroll事宜,都邑实行switchBlur函数。比方此时的状况是不隐约,若sh<wh一直为tureswitchBlur(0)完整没必要实行。

下面革新一下代码:

var blur_px;
var s1 = 0;
var s2 = 0;
var wh = $(window).height();
$(document).on('scroll',function() {
    var sh = $(document).scrollTop();
    if(sh<wh){
        s1 = s2;
        s2 = 0;
        blur_px = 0;
      }else {
        s1 = s2;
        s2 = 1;
        blur_px = 10;
      }
      if(s1!=s2){
        switchBlur(blur_px);
      }
});

我运用s1s2纪录两个时候的状况。s1示意此次scroll事宜前一次的状况(0或1),而s2天然示意当前的状况,每次事宜实行时,不管状况是不是发作状况转变,都把本来s2的值赋给s1,而s2则更新到最新的状况。能够发明,switchBlur函数只在s1不等于s2的时候实行,那末什么时候s1不等于s2呢?答案就是状况发作转变的时候,s2已经是最新的状况,此时s1保存的仍然是上一次事宜实行时的状况,固然不相等啦。

总结:此要领试用于只在状况发作转变时才须要实行相干代码的状况。这里只是一个例子,能够延伸到许多须要优化机能的处所。

    原文作者:条件状语从句
    原文地址: https://segmentfault.com/a/1190000003982208
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞