2013-09-23 50 views
13

Tôi muốn kiểm tra xem một phần tử có được cuộn lên trên cùng với độ lệch là ~ 100px hay không.kiểm tra xem phần tử đã được cuộn lên đầu

Tôi đã có một trang có 5 nội dung con và 2 lớp để tạo hình nền. Nó trông giống như thế này:

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

Bây giờ tôi muốn kiểm tra, khi một trong các lớp này đạt tới đỉnh bằng cách di chuyển

Đây là một trong trys cuối cùng của tôi:

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

Tôi nghĩ rằng đây là thử gần nhất của tôi bây giờ ... tất nhiên mã này là trong document.ready và ở phần cuối của mã của tôi ....

TLDR: Làm thế nào để kiểm tra xem một phần tử đã được cuộn lên đầu (và một số bù đắp) ?

+1

cửa sổ OnScroll có vẻ là những gì bạn đang tìm kiếm –

Trả lời

19

Bạn phải lắng nghe cho sự kiện di chuyển, sau đó kiểm tra từng yếu tố so với khoảng cách hiện cuộn, một cái gì đó như: sự kiện

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

này lloks về những gì tôi đã tìm kiếm vì ... Tôi hoàn toàn cố định về việc làm thế nào để có được vị trí ... nhưng quên di chuyển để đến đó ... cảm ơn! Chấp nhận sau 8 phút. –

+2

'position()' nhận được vị trí các phần tử liên quan đến cha mẹ, tôi cá rằng bạn đang tìm kiếm 'offset()', lấy vị trí tương đối so với tài liệu. Cũng lưu ý bộ chọn, vì bộ chọn của bạn tìm kiếm '.background1' bên trong' .background2' và không chọn cả hai. – adeneo

+0

Tuyệt vời! Dòng này: 'var scrollTop = $ (this) .scrollTop(); ' chính xác là những gì tôi đang tìm kiếm. Tôi không thể tìm ra lý do tại sao giá trị hàng đầu .offset(). Bây giờ tôi thấy rằng giá trị offset có liên quan đến tài liệu, vì vậy nó là vĩnh viễn - đó là lý do tại sao bạn cần so sánh nó với giá trị '$ (window) .scrollTop()'. –

Các vấn đề liên quan