2016-04-25 18 views
0

Ich habe eine Liste mit generierten divs wie folgt aus:Nur nächsten 10 divs

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

Auf Scroll I in 10 divs verblassen wollen und eine gefälschte loader zeigen.

Für jetzt habe ich diesen Code:

$(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); 
     } 

    }); 

}); 

Also, wenn der Ajax-loader div es lädt alle divs jetzt sichtbar ist, aber ich möchte nur die nächsten paar divs laden.

+1

Überprüfen Sie [.offset()] (http://api.jquery.com/offset/), um zu überprüfen, ob sich ein Element an einer bestimmten Position im Dokument befindet. Ihr aktueller Selektor überprüft nicht die Positionierung der Divs. – apokryfos

Antwort

2

Ich bin sicher, es gibt viele Möglichkeiten, aber ich neige dazu, slice() zu verwenden.

In Ihrem Fall Folgendes könnte den Trick tun:

ersetzen: $('.news-loaded').fadeIn(300);

mit:

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

EDIT: Credit freedomn-m für diese verbesserte Version des oben:

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

Ändern Sie in '$ ('. News-loaded'). Nicht (': visible'). Slice (0, 9) .fadeIn (300);' und Sie müssen nicht verfolgen, welche bereits angezeigt wurden. –

+0

Danke, unglaublich! Eine letzte Frage: Wie kann ich prüfen, ob alle Elemente sichtbar sind? Also kann ich den Ajax Loader verstecken –

+2

'if ($ ('. News-loaded'). Nicht (': visible'). Length == 0)' = keine sind nicht sichtbar = alle sind sichtbar –

Verwandte Themen