2013-09-23 18 views
13

Ich möchte überprüfen, ob ein Element nach oben mit einem Offset von ~ 100px gescrollt ist.überprüfen, ob Element nach oben gescrollt wurde

Ich habe eine Seite mit 5 Subcontents und 2 Klassen um Hintergründe zu erstellen. Es sieht wie folgt aus:

<div class="background1"> 
Content1 
</div> 
<div class="background2"> 
Content2 
</div> 
<div class="background1"> 
Content3 
</div> 
<div class="background2"> 
Content4 
</div> 
<div class="background1"> 
Content5 
</div> 

Jetzt möchte ich überprüfen, wenn eine dieser Klassen die Spitze erreicht durch

Scrollen Dies ist einer meiner letzten trys:

$('.background1', '.background2').position(function(){ 
      if($(this).position().top == 100){ 
      alert('checkThis'); 
     } 
     }); 

Ich denke, das ist mein nächster Versuch jetzt ... natürlich ist dieser Code in document.ready und am Ende meines Codes ....

TLDR: Wie man überprüft, ob ein Element nach oben gescrollt wurde (und etwas Offset) ?

+1

Fenster onscroll Ereignis scheint zu sein, was Sie suchen –

Antwort

19

Sie haben für das Scroll-Ereignis zu hören, dann jedes Element prüfen gegen die aktuell gescrollt Abstand, so etwas wie:

$(window).on('scroll', function() { 
    var scrollTop = $(this).scrollTop(); 

    $('.background1, .background2').each(function() { 
     var topDistance = $(this).offset().top; 

     if ((topDistance+100) < scrollTop) { 
      alert($(this).text() + ' was scrolled to the top'); 
     } 
    }); 
}); 
+0

Diese lloks über das, was ich gesucht denn ... ich habe mich total darauf festgelegt, wie ich die Position bekommen soll ... aber ich habe die Schriftrolle vergessen, um dorthin zu kommen ... Danke! Akzeptiere in 8 Minuten. –

+2

'position()' erhält die Elementposition relativ zum Elternteil, ich wette, dass Sie nach 'offset()' suchen, das die Position relativ zum Dokument erhält. Beachten Sie auch den Selektor, da Ihr Selektor nach '.background1' in' .background2' sucht und nicht beides auswählt. – adeneo

+0

Super! Diese Zeile: 'var scrollTop = $ (this) .scrollTop();' war genau das, was ich gesucht habe. Ich konnte nicht herausfinden, warum sich der Wert von .offset(). Top überhaupt nicht änderte. Jetzt sehe ich, dass der Offset-Wert mit dem Dokument verwandt ist, also ist es permanent - deshalb müssen Sie es mit dem '$ (window) .scrollTop()' Wert vergleichen. –

Verwandte Themen