繁体   English   中英

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

[英]How do I make a JS function only run once per spam of calls

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

这是一个工作示例: 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 );
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM