2016-12-04 5 views
0

Мне нужна помощь, вставляющая что-то вроде задержки между выполнением этого «кода()». Например, я хочу, чтобы он выполнялся один за другим каждые 4 секунды. Так, как и первый, через 4 секунды код выполняется снова и так далее для каждого из элементов данного класса.Нужно добавить временную задержку между элементами .each

Я также использую это в этом «коде()», поэтому мне нужно, чтобы он оставался там, потому что, например, я получал идентификатор каждого класса и использовал его.

var myFunction = function(){ 

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

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


       code(); 


      } 

     }); 
    }; 
+2

Вы пробовали использовать setInterval (код, 4000) – carton

+1

@carton он будет делать все по 4 секунды, каждый не будет асинхронно. –

+1

Возможный дубликат [Что такое версия JavaScript для сна()?] (Http://stackoverflow.com/questions/951021/what-is-the-javascript-version-of-sleep) –

ответ

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); 
    }); 
}; 
+0

Первая версия кода отлично работает, но что, если я хочу, чтобы она сначала проверяла для каждого элемента непрозрачность, и только если это правда, тогда выполните код. Поскольку теперь, например, если первые два являются ложными, а третье - истинными, он ждет 8 секунд для каждого, прежде чем перейти на третье и выполнить код. – PredatorIWD

+0

Второй, использующий filter(), должен работать так, как вы ожидаете. –

+0

Теперь он сначала проверяет непрозрачность для всех элементов этого класса, но в этом втором коде он выполняет этот «код()» даже быстрее, чем 4 секунды, и если есть один элемент, который является истинным, он выполняет код на нем несколько раз ... он не переходит к следующему, если есть больше ... – PredatorIWD

Смежные вопросы