2017-04-08 8 views
0

Ich möchte eine Klasse zu jedem Element hinzufügen, das sich gerade im Fenster befindet, mit einer Verzögerung zwischen einem Domino-Effekt.jQuery addClass zu sichtbaren Elementen mit Verzögerung

Was ich habe, macht die Verzögerung gut, aber fügt die Klasse allen übereinstimmenden Elementen hinzu und nicht nur den in Sicht.

$(document).ready(function() { 
    $('.box').each(function(i){ 
    if($(this).scrollTop() <= $(window).scrollTop() + $(window).height()) { 
     var tile = $(this); 
     setTimeout(function() { 
     tile.addClass('visible'); 
     }, 500*i); 
    }; 
    }); 
}); 
+0

Haben Sie an der 'delay' in jquery geschaut? – funcoding

Antwort

1

Sie möchten nicht auf die scrollTop der Box überprüfen. Sie wollen für die offset().top

Überprüfung werden diese Arbeiten sollten:

$(document).ready(function() { 
    $('.box').each(function(i){ 
    if($(this).offset().top <= $(window).scrollTop() + $(window).height()) { 
     var tile = $(this); 
     setTimeout(function() { 
     tile.addClass('visible'); 
     }, 500*i); 
    }; 
    }); 
});