Создать задержку при выполнении функции
Для автоматизации действий на нужном мне сайте получил от товарища скрипт:
$('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, время: 00:04. |