2013-09-23 2 views
13

Я хочу проверить, прокручивается ли элемент до вершины со смещением ~ 100 пикселей.проверить, прошел ли элемент с прокруткой вверх

У меня есть страница с 5 субконтентами и 2 классами для создания фона. Это выглядит следующим образом:

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

Теперь я хочу, чтобы проверить, когда один из этих классов достигают вершины прокрутки

Это одна из моего последнего Trys:

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

Я думаю, что это это моя самая близкая попытка к настоящему времени ... конечно, этот код находится в документе. Уже и в конце моего кода ....

TLDR: Как проверить, был ли элемент прокручен вверх (и некоторое смещение) ?

+1

окна OnScroll события, кажется, что вы ищете –

ответ

19

Вы должны прослушивать событие прокрутки, а затем проверить каждый элемент по отношению к себе прокручивать расстояние, что-то вроде:

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

Это lloks о том, что я искал для ... Я полностью исправил это, как получить позицию ... но забыл прокрутить, чтобы попасть туда ... спасибо! Принимайте за 8 минут. –

+2

'position()' получает позицию элементов относительно родителя, я уверен, что вы ищете 'offset()', которая получает позицию относительно документа. Также обратите внимание на селектор, так как ваш селектор ищет '.background1' внутри' .background2' и не выбирает оба. – adeneo

+0

Удивительный! Эта строка: 'var scrollTop = $ (this) .scrollTop();' был именно тем, что я искал. Я не мог понять, почему .offset(). Верхнее значение вообще не менялось. Теперь я вижу, что значение смещения связано с документом, поэтому оно постоянное - поэтому вам нужно сравнить его с значением '$ (window) .scrollTop()'. –

Смежные вопросы