Создать задержку при выполнении функции
Для автоматизации действий на нужном мне сайте получил от товарища скрипт:
$('a:contains("xxxxx")').siblings('.xxxxx').each(function() {
*функция*
}) ;
В принципе, задачу выполняет, но есть проблема: местный сервер не может обработать сразу несколько действий, ему необходима задержка после выполнения функции для каждого отдельного элемента. В результате при запуске скрипта только последний элемент набора оказывается подвержен воздействию функции. Можно ли вставить задержку так, чтобы для каждого элемента в отдельности функция выполнялась после настраиваемой паузы и как в таком случае должен выглядеть код? |
$('a:contains("xxxxx")').siblings('.xxxxx').each(function(index) {
setTimeout(*функция*, (index * 100) || 10);
}) ;
где index - номер элемента набора. Вообще, как правило, если вы используете setTimeout - значит что-то пошло не так (если вы конечно не делаете анимации) |
Может, лучше посчитать элементы и setInterval,ом потом перебрать?
Как-то так, например
var a = $.makeArray($('a:contains("xxxxx")').siblings('.xxxxx')),
l = a.length,
i = 0,
c;
c = setInterval(function(){
if (i <= l){
$(a[i]).(/*всякие действия*/);
}else{
clearInterval(c);
}
i++;
},1500);
|
Viral,
Интервалом вообще лучше не пользоваться, лучше запускать таймаут после каждой итерации. http://learn.javascript.ru/settimeout-setinterval |
delete
|
| Часовой пояс GMT +3, время: 13:34. |