2011-10-15 66 views
65

Làm cách nào để tìm khoảng cách thẳng đứng từ đầu trang đến nơi phần tử tồn tại trong DOM bằng javascript/jQuery?cách tìm khoảng cách thẳng đứng từ đầu trong px của một phần tử bằng cách sử dụng jQuery

Tôi đã giống như

<ul> 
    <li>one</li> 
    <li>one</li> 
    <li>one</li> 
    <li>one</li> 
    <li class="test">one</li> 
    .... 
    .... 
    .... 
    <li>one</li> 
</ul> 

Ví dụ ở đây, tôi muốn tìm khoảng cách thẳng đứng từ trên cùng của trang để các yếu tố li#test.

Tôi đã thử .scrollTop() nhưng giá trị này luôn bằng 0!

+1

đây có phải là nội dung bạn đang tìm kiếm không? var position = $ ('li # test'). position(); cảnh báo (position.top); –

Trả lời

143

Sử dụng .offset() để có được khoảng cách giữa một yếu tố và phía trên cùng của tài liệu:

$("li.test").offset().top 
89

Rob W của câu trả lời là đúng - mà sẽ cung cấp cho bạn những bù đắp từ phía trên cùng của trang đầy đủ.

Nếu bạn muốn để có được bù đắp từ phía trên cùng của màn hình có thể xem được, bạn nên làm điều này:

var viewableOffset = $("#li.test").offset().top - $(window).scrollTop(); 

Hy vọng rằng sẽ giúp!

+1

Chào mừng bạn đến với SO :) –

+2

Haha cảm ơn. SO luôn luôn là một hit hữu ích trên Google tìm kiếm, và tôi đã chán và figured tôi muốn trả lời một số câu hỏi. Tôi chủ yếu là trolling quanh đây trong khi chờ đợi một câu trả lời trên trang web chị em của SO, ServerFault. Tôi là một lập trình viên lâu năm và quản trị viên newbie. :) – thexfactor

+1

Đây là một bit tuyệt vời của mã nếu bạn đang kiểm soát vị trí: các yếu tố cố định! – Starkers

3

Theo như tôi biết .offset() lấy khoảng cách giữa vị trí cuộn hiện tại và đầu tài liệu.

Bạn cần phải sử dụng này:. $("li.test").position().top

+0

liên quan đến offsetParent, có thể không phải là div mẹ – aaron

0

Sử dụng $ (element) .offset() trên và thêm chiều cao của các yếu tố cố định hiện có trên trang với nó để làm cho nó chính xác hơn.

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