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

Need to add time delay between .each elements

我需要帮助插入一些东西,比如执行 "code()" 之间的延迟。例如,我希望它每 4 seconds.So 一个接一个地执行,就像第一个执行一样,4 秒后代码对给定 class 的每个元素再次执行,依此类推。

我还在那个 "code()" 中使用 .this,所以我需要它留在那里,因为例如我正在获取每个给定 class 的 ID 并使用它。

var myFunction = function(){

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

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


                code();


            }

        });
    };

您可以简单地使用 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);
  });
};