Ich habe diesen Code online gefunden und eine if-Anweisung hinzugefügt, die überprüft, ob das Element zuvor animiert wurde. Wenn dies der Fall ist, sollte die Klasse entfernt werden, die es zu einem Ziel für die Animation macht. Aus irgendeinem Grund funktioniert es nicht und das Element animiert immer wenn es in den View-Port kommt und nicht nur das erste Mal wie ich es möchte.jQuery - Animieren auf Scroll-Bug
var $flyInLeft = $('.fly-in-left');
var $window = $(window);
function check_if_in_view() {
var window_height = $window.height();
var window_top_position = $window.scrollTop();
var window_bottom_position = (window_top_position + window_height);
$.each($flyInLeft, function() {
var $element = $(this);
var element_height = $element.outerHeight();
var element_top_position = $element.offset().top;
var element_bottom_position = (element_top_position + element_height);
//check to see if this current container is within viewport
if ((element_bottom_position >= window_top_position) &&
(element_top_position <= window_bottom_position)) {
$element.addClass('animated slideInLeft already-viewed');
} else {
$element.removeClass('animated slideInLeft');
}
// This is the bit that doesn't seem to work.
if ($element.hasClass('already-viewed')) {
$element.removeClass('fly-in-left');
}
});