Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   подгрузка контента аяксом (https://javascript.ru/forum/dom-window/50098-podgruzka-kontenta-ayaksom.html)

imedia 11.09.2014 20:46

подгрузка контента аяксом
 
Я использую timeout хочу добится того чтобы каждая фотка открывалась с задержкой, но с задержкой открывается весь блок из 9 фоток, как добиться того чтобы каждая фотка задерживалась
var inProcess = false;
var num = 9;
var cnt= new Url();
cnt=cnt.path.toString();
cnt=cnt.split('/')
cnt=cnt[2];
var cat = "1";
var url = "/functions_ajax/get_photos";

 $(window).scroll(function func () {

            if($(window).scrollTop() + $(window).height() >= $(document).height() && !inProcess ) {
			
		 $.ajax({
               type: "POST",
		dataType: 'json',
		url: url,
		data: {num:num,cnt:cnt},
		cache: false,
		success: function(data){
		if (data.length>0) {
		$.each(data, function (index, data){
                //здесь я использую timeout чтобы была задержка
		setTimeout(function() {
             $('.news').append('<div class="kurs"><img class="item"  src="'+data.thumb +'" alt="" title=""/></div>');
            }, 1000);
});
		inProcess = false;
		num += 9;
		}

                },
			  error:  function(xhr, str){
			   alert('Возникла ошибка: ' + xhr.responseCode);
			   }
				})
         
 
            }
   })

Safort 11.09.2014 23:13

imedia,
наверняка дело в том, что метод $.each отрабатывает достаточно быстро, по этому таймер срабатывает примерно через одно и тоже время.
Попробуй при каждой итерации добавлять ещё секунду. Т.е. как-то так:
var i = 0;
$.each(data, function (index, data) {
  i += 1000;
  setTimeout(function() {
  $('.news').append('<div class="kurs"><img class="item"  src="'+data.thumb +'" alt="" title=""/></div>');
}, i);


Часовой пояс GMT +3, время: 22:13.