2016-05-01 14 views
0

Ich habe diesen Code bereits erfolgreich für fadeIn, animate, CSS Transitionen und Transformationen verwendet.jQuery scrollbasiert fadeIn nicht auf scroll warten

$(window).scroll(function(){ 

    $('.item1').each(function (i) { 

     var bottom_of_object = $(this).offset().top + $(this).outerHeight(); 
     var bottom_of_window = $(window).scrollTop() + $(window).height(); 
     /* For testing only */ 
     console.log(bottom_of_object); 
     console.log(bottom_of_window); 

     /* If the object is visible in the window */ 
     if (bottom_of_window > bottom_of_object) { 

      $(this).fadeIn(1000, 'swing', function() { 
       $('.item2').fadeIn(1000, 'swing', function() { 
        $('.item3').fadeIn(1000, 'swing', function() { 
         $('.item4').fadeIn(1000, 'swing'); 
        }); 
       }); 
      }); 
     } 
    }) 
}); 

aber ich kann es einfach nicht richtig mit diesem HTML arbeiten.

<div class="container"> 
    <div class="row"> 
     <div class="col-md-3 col-xs-12 img-responsive item item1"> 
      <img src="images/gallery/Brows/brows13.png" /> 
     </div> 
     <div class="col-md-3 col-xs-12 img-responsive item item2"> 
      <img src="images/gallery/Liner/liner2.png" /> 
     </div> 
     <div class="col-md-3 col-xs-12 img-responsive item item3"> 
      <img src="images/gallery/Body Ink/BI004.png" /> 
     </div> 
     <div class="col-md-3 col-xs-12 img-responsive item item4"> 
      <img src="images/gallery/Nails/nails1.png" /> 
     </div> 
    </div> 
    </div> 

Ich kann nicht herausfinden, was ich diesmal falsch gemacht habe.

Hätte es deutlicher machen müssen, sorry, ich war in Eile, aus der Tür, bevor die Geschäfte geschlossen. Die Bilder fadeIn, aber sie tun es beim Laden der Seite, nicht beim Blättern.

Antwort

0

Ihr findet nur das erste div (item1). Vorausgesetzt, dass Sie sie alle benutzen finden wollen

CSS 
<style>.item4 { display: none; }</style> 

jQuery 
var bottom_of_window = $(window).scrollTop() + $(window).height(); 
$(window).scroll(function(){ 

$('.item1').each(function (i) { 

    var bottom_of_object = $(this).offset().top + $(this).outerHeight(); 
    /* For testing only */ 
    console.log(bottom_of_object); 
    console.log(bottom_of_window); 

    /* If the object is visible in the window */ 
    if (bottom_of_window > bottom_of_object) { 

    $(this).fadeIn(1000, 'swing', function() { 
     $('.item2').fadeIn(10000, 'swing', function() { 
      $('.item3').fadeIn(10000, 'swing', function() { 
       $('.item4').fadeIn(10000, 'swing'); 
      }); 
     }); 
    }); 
    } 
}) 
}); 
+0

Ich will nur '.item1'' finden, da dies eine Kette von FadeIns beginnt, was es tut, aber es beginnt beim Laden der Seite und ignoriert die Rolle – Bounce

+0

Okay, ich habe es. Alle Bilder sind sichtbar, wenn Sie die Seite starten. Es könnte etwas CSS fehlen. Ich habe den Code angepasst, der im vierten Bild Fading zeigt. – Gerard

+0

Nr. Item1 startet die FadeIn-Sequenz auf '$ (document) .ready()'. Ihre Antwort hat mir jedoch eine Idee gegeben. Ich hatte: '.item {display: none;}' aber nur '.item1 versucht haben, {display: none;}' ... '.item4 {display: none;}' und es funktionierte – Bounce

0

Sie fehlen zwei DIVS am Ende.

Überprüfen Sie immer Ihren HTML-Code, wenn Sie in eine Quandry geraten und etwas nicht funktioniert, wenn es sollte. Sie können einen Berg von Schmerzen auf diese Weise retten.

Ich habe das Gefühl, dass Sie einfach vergessen haben, die letzten zwei divs hier aufzunehmen, und dass sie in Ihrem eigenen Code erscheinen. Allerdings würde ich immer noch sagen die Seite validieren, nur um zu überprüfen.

Während ich hier bin, erklären diese außerhalb der Schleife:

var bottom_of_window = $(window).scrollTop() + $(window).height();

Sie möchten Ihre DOM Anrufe so weit wie möglich zu minimieren, und dies während der Dauer nicht von Ihrem sich ändern Schleife.

+0

Die beiden closed div Tags sind da, das war nur ein Teil der HMTL, da ich zwei Reihen von 4 Bildern habe. Ich habe die Frage bearbeitet. Entschuldigung für jede Verwirrung. – Bounce

+0

Und haben Sie den HTML-Code der ganzen Seite validiert? – Puzbie