2016-04-25 2 views
0

У меня есть список с сгенерированных дивы, как это:Показывать только следующие 10 дивы

<div class="news-loaded">...</div> 
<div class="news-loaded">...</div> 
<div class="news-loaded">...</div> 
<div class="news-loaded">...</div> 
etc. 

На свитке я хочу, чтобы исчезнуть в 10 дивы и показать поддельный погрузчик.

Теперь у меня есть этот код:

$(window).scroll(function(){ 
    $('.ajax-loader').each(function(i){ 

     var bottom_of_object = $(this).offset().top + $(this).outerHeight(); 
     var bottom_of_window = $(window).scrollTop() + $(window).height(); 
     if(bottom_of_window > bottom_of_object){ 
      $('.news-loaded').fadeIn(300); 
     } 

    }); 

}); 

Таким образом, если Аякса погрузчик ДИВ виден теперь загружает все дивы, но я просто хочу, чтобы загрузить следующие несколько див.

+1

Проверьте [.offset()] (http://api.jquery.com/offset/), как проверить, находится ли элемент в определенной позиции в документе. Ваш текущий селектор не будет проверять расположение разделов. – apokryfos

ответ

2

Я уверен, что есть много способов, но я склонен использовать slice().

В вашем случае, следующий может сделать трюк:

Заменить: $('.news-loaded').fadeIn(300);

С:

$('.news-loaded').slice(0, 9).fadeIn(300); 

EDIT: Кредит freedomn-m для этой расширенной версии выше:

$('.news-loaded').not(':visible').slice(0, 9).fadeIn(300); 
+2

Измените на '$ ('. News-loaded'). Not (': visible'). Slice (0, 9) .fadeIn (300);' и вам не нужно отслеживать, которые уже были показаны. –

+0

Спасибо, потрясающе! Последний вопрос: как проверить, все ли элементы видимы? Поэтому я могу скрыть загрузчик ajax –

+2

'if ($ ('. News-loaded'). Not (': visible'). Length == 0)' = none не видны = все видимы –

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