2013-09-23 17 views
13

Chcę sprawdzić, czy element jest przewijany do góry z przesunięciem ~ 100px.Sprawdź, czy element został przewinięty do góry

Mam stronę z 5 podkontynentami i 2 klasami do tworzenia tła. Wygląda to tak:

<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> 

Teraz chcę sprawdzić, kiedy jedna z tych klas osiągnie szczyt przewijając

Jest to jeden z moich ostatnich co¶:

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

myślę, że to to moja najbliższa próba już ... oczywiście ten kod jest w dokumencie. Już i na końcu mojego kodu ....

TLDR: Jak sprawdzić, czy element został przewinięty do góry (i trochę przesunięty) ?

+1

okna onscroll razie wydaje się być to, czego szukasz –

Odpowiedz

19

Trzeba nasłuchiwać zdarzenia przewijania, a następnie sprawdzić każdy element przed aktualnie przewijane oddali, coś jak:

$(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

Ten lloks o co szukałem dla ... Całkowicie ustaliłem, jak uzyskać pozycję ... ale zapomniałem przewinięcia, aby się tam dostać ... dzięki! Zaakceptuj za 8 minut. –

+2

'position()' pobiera pozycję elementów względem rodzica, założę się, że szukasz 'offset()', która pobiera pozycję względem dokumentu. Zwróć także uwagę na selektor, ponieważ twój selektor szuka '.background1' wewnątrz' .background2' i nie wybiera obu. – adeneo

+0

Awesome! Ta linia: 'var scrollTop = $ (this) .scrollTop();' był dokładnie tym, czego szukałem. Nie mogłem się domyślić, dlaczego najwyższa wartość .offset(). W ogóle się nie zmieniała. Teraz widzę, że wartość odsunięcia jest związana z dokumentem, więc jest stała - dlatego należy ją porównać z wartością '$ (window) .scrollTop()'. –