2012-10-06 3 views
2

Я использую бесконечную нагрузку с функцией jquery.window.scroll с этими кодами.jQuery бесконечная прокрутка двойной нагрузки

$(window).scroll(function(){ 
    if ($(window).scrollTop() == $(document).height() - $(window).height()){ 
     var page = $('#lastPostsLoader').attr('page')*1; 
     $('#lastPostsLoader').attr('page', page + 1); 
     DataLoadFunction(page); 
    } 
}); 

Но эти коды требуют двойного времени, а иногда и ложных страниц при прокрутке вниз. Как это;

Прокрутка внизу ---> загрузка страницы 1 и страница загрузки 2 ---> прокрутка вниз ---> загрузка страницы 3 и страница загрузки 2 ---> прокрутка внизу ---> загрузка страницы 4 страница загрузки 5 ........

Итак, где я ошибаюсь? Спасибо ...

+2

Возможно, вы захотите установить флаг в true, когда номер страницы изменится, а затем установите значение false в 'DataLoadFunction', как только оно будет завершено. В противном случае, если вы прокрутите страницу вниз и затем прокрутите ее снова, она дважды вызовет эту функцию (и если вы прокрутите ее больше, она будет вызывать эту функцию больше раз). Раньше я сталкивался с подобной проблемой и использовал флаг для меня. Затем вы проверили бы, будет ли '! Loading', если ваш флаг называется' loading', в вашем операторе if. – ClarkeyBoy

ответ

4

вы должны предотвратить dataload до прибытия следующих данных. set variable isLoadingData как истина, пока данные загружаются с сервера.

var isLoadingData; 
$(window).scroll(function(){ 
     if (($(window).scrollTop() == $(document).height() - $(window).height()) && !isLoadingData){ 
       isLoadingData = true; 
      var page = $('#lastPostsLoader').attr('page')*1; 
      $('#lastPostsLoader').attr('page', page + 1); 
      DataLoadFunction(page, function(){ // callback get called after data load 
         isLoadingData = false; 
      }); 
     } 
    }); 
+0

Еще одна проблема ... – pheaselegen

+0

Предлагаю вам попробовать $ (window) .unbind ('scroll'). отменить привязку перед привязкой. Возможно, что свиток дважды привязывается к окну. – Anoop

+1

Хорошо. Я пересмотрел ajax load target divs, и я использовал ваш вариант. Так что действительно работает хорошо ... Спасибо .. – pheaselegen

Смежные вопросы