【发布时间】:2019-02-04 17:10:38
【问题描述】:
我一直在尝试在 jQuery 中创建一个函数,让 div 在向下滚动时比页面的其余部分更快地向上移动,并让它在相反的方向上做同样的事情。
这有效,但有 1.5 秒的冷却时间以避免来自$(window).scroll(function() 的垃圾邮件。因此,人们在加入网站时必须等待 1.5 秒才能正常工作,然后每次必须等待 1.5 秒上下滚动才能看到效果完美。
我将如何解决这个延迟?为了获得良好的用户体验,应该没有延迟。 (转换函数来自库,这里没有错。)
var $intervalReady = false;
setInterval(function(){if($intervalReady==false){
$intervalReady = true;
}}, 1500);
$( document ).ready(function() {
var $elementBeginPos = $('#headertext').position();
$(window).scroll(function(){
var top = $(this).scrollTop();
if(top > 60 && $intervalReady==true){
$('#headertext').transition({y:'30%'});
$intervalReady = false;
}
else if(top < 60 && $intervalReady==true){
$('#headertext').transition({y:'-30%'});
$intervalReady = false;
}
});
});
【问题讨论】:
-
如果您不反对使用第 3 方库,请查看lodash throttle
-
@apokryfos 谢谢你。你会认为 jQuery 或 JS 会支持这一点,但不是。不过,我仍然想看看是否有人有非图书馆的答案。
-
好吧,非库答案与您正在做的事情类似,但在 1500 毫秒开始时会以某种方式限制函数的执行,因此您从
$intervalReady=true开始,所以一开始您立即执行
标签: javascript jquery