需要在.each元素之间添加时间延迟

时间:2016-12-04 12:32:40

标签: javascript jquery each

我需要帮助在执行“code()”之间插入一些延迟。例如,我希望它每4秒钟一个接一个地执行。就像第一个执行一样,4秒后代码再次执行,所以对于给定类的每个元素。

我也在“code()”中使用.this所以我需要它留在那里因为例如我获取每个给定类的id并使用它。

var myFunction = function(){

        $(".someClass").each( function(){

            if( this.style.opacity != "0.5" ){


                code();


            }

        });
    };

1 个答案:

答案 0 :(得分:3)

您可以简单地使用each循环索引来使用超时来延迟它:

var myFunction = function() {
  $(".someClass").each(function(i) {
    setTimeout(function() {
      if (this.style.opacity != "0.5") {
        code();
      }
    }.bind(this), i * 4000); // bind relevant context
  });
};

其他版本,使用filter()

var myFunction = function() {
  $(".someClass").filter(function(){
    return this.style.opacity != "0.5";
  }).each(function(i) {
    setTimeout(code.bind(this), i * 4000);
  });
};