userAlexander
@userAlexander
Верстка наше все)

Как реализовать setTimeout() в each?

Добрый день, подскажите пожалуйста, как реализовать подобное?
$('.js-iframe-load').each(function(i){
	setTimeout(function(){
		$(this).attr('src', $(this).attr('data-src-frame') );
	}, 2000);
});


Нашел альтернативу, но как остановить setInterval когда все дочерние элементы перебраны?
var elements = $('.similar-article').find('.sa-th');
var index = 0;
setInterval(function(){
	$(elements).eq(index).find('.js-iframe-load').attr('src', $(elements).eq(index).find('.js-iframe-load').attr('data-src-frame') );
	console.log(index++);
}, 2000);
  • Вопрос задан
  • 1341 просмотр
Решения вопроса 1
sidan
@sidan
php-developer
Вроде должно работать
jQuery('.js-iframe-load').each(function(){
   setTimeout((function(){ $(this).attr('src', $(this).attr('data-src-frame') ); }).bind(this) , 2000)
})

jsfiddle.net/Lo3kuqjy
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
bigton
@bigton
Web-программист
Не ясно какую задачу вы решаете.
Срабатывают все сразу, потому что JS выполняет код асинхронно.
Можно модернизировать ваш код, чтобы он выполнился не параллельно, а друг за другом.

$('.js-iframe-load').each(function(i){
  setTimeout(function(){
    $(this).attr('src', $(this).attr('data-src-frame') );
  }, 2000 * i);
});
Ответ написан
Комментировать
userAlexander
@userAlexander Автор вопроса
Верстка наше все)
Анатолий Сидоров: Anton B:
Нашел такое решение:
var index = 0;
if(index >= $('.js-iframe-load').length){
	clearInterval(intrvl);
}
intrvl = setInterval(function(){
	$('.js-iframe-load').eq(index).attr('src', $('.js-iframe-load').eq(index).attr('data-src-frame') );
	index++
}, 3000);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы