Вход

Просмотр полной версии : подгрузка контента аяксом


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);