2009-06-25 35 views
5

Tôi dường như không thể tìm ra cách lấy offsetTop của một phần tử trong bảng. Nó hoạt động tốt trên các phần tử bên ngoài các bảng, nhưng tất cả các phần tử trong một bảng trả về cùng một kết quả, và nó thường ở trên cùng của trang. Tôi đã thử điều này trong Firefox và Chrome. Làm cách nào để lấy offsetTop của một phần tử trong bảng?Lấy offsetTop của phần tử trong một bảng

Trả lời

17

offsetTop trả về giá trị tương ứng với offsetParent; bạn cần phải đệ quy thêm offsetParent.offsetTop thông qua tất cả phụ huynh cho đến offsetParentnull. Xem xét sử dụng phương thức offset() của jQuery.

EDIT: Nếu bạn không muốn sử dụng jQuery, bạn có thể viết một phương pháp như thế này (chưa được kiểm tra):

function offset(elem) { 
    if(!elem) elem = this; 

    var x = elem.offsetLeft; 
    var y = elem.offsetTop; 

    while (elem = elem.offsetParent) { 
     x += elem.offsetLeft; 
     y += elem.offsetTop; 
    } 

    return { left: x, top: y }; 
} 
+1

này không hoạt động trong IE7 (đáng tin cậy). IE5-7 không tính các phần tử có vị trí tương đối như offsetParents. – KeatsKelleher

+0

@SLaks giải pháp tuyệt vời :) – Muhammed

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