在许多时候,一系列事宜会触发的很快,在这类事宜中及时监听某个值的状况并在某个条件下实行其他操纵,无疑会使机能变得非常狼狈。
为了要领解说的简明易懂,我挑选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
一直为ture
,switchBlur(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);
}
});
我运用s1
和s2
纪录两个时候的状况。s1
示意此次scroll
事宜前一次的状况(0或1),而s2
天然示意当前的状况,每次事宜实行时,不管状况是不是发作状况转变,都把本来s2
的值赋给s1
,而s2
则更新到最新的状况。能够发明,switchBlur
函数只在s1
不等于s2
的时候实行,那末什么时候s1
不等于s2
呢?答案就是状况发作转变的时候,s2
已经是最新的状况,此时s1
保存的仍然是上一次事宜实行时的状况,固然不相等啦。
总结:此要领试用于只在状况发作转变时才须要实行相干代码
的状况。这里只是一个例子,能够延伸到许多须要优化机能的处所。