如何使JS函数每个垃圾邮件仅运行一次

时间:2019-02-04 08:16:09

标签: javascript jquery

我一直在尝试在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;
      }
    });
});

1 个答案:

答案 0 :(得分:0)

这是一个有效的示例:https://jsfiddle.net/37khp0ft/ 适应您的需求。

通常,在计时器事件而不是滚动事件上更新状态。

JS部分:

function updatePos(selector, multiplier)
{
   var scrollPos = $(document).scrollTop(); 
   $(selector).css({top: scrollPos * multiplier});
}
$(document).ready(function()
{
   setInterval(updatePos, 100,'#div', -1.1 );
});