2012-10-05 46 views

Trả lời

121

Thêm outerheight đầu trang và bạn có đáy, liên quan đến các yếu tố phụ huynh:

var $el = $('#bottom'); //record the elem so you don't crawl the DOM everytime 
var bottom = $el.position().top + $el.outerHeight(true); // passing "true" will also include the top and bottom margin 

Với yếu tố hoàn toàn vị trí hoặc khi vị trí tương đối so với tài liệu, bạn sẽ cần phải thay vì đánh giá sử dụng bù đắp:

var bottom = $el.offset().top + $el.outerHeight(true); 

Như được chỉ ra bởi trnelson điều này không hoạt động 100% thời gian. Để sử dụng phương thức này cho các phần tử định vị, bạn cũng phải tính toán bù trừ. Ví dụ, xem đoạn mã sau.

var bottom = $el.position().top + $el.offset().top + $el.outerHeight(true); 
+1

Làm việc như một nét duyên dáng. Cảm ơn! – lagwagon223

+1

Làm đẹp !! Điều này hoạt động tuyệt vời! – tim687

+6

Tôi đã gửi bản chỉnh sửa nhưng đã bị từ chối. Câu trả lời này là đúng về mặt kỹ thuật trong ngữ cảnh này, nhưng không giải quyết được vấn đề 100% thời gian. Để sử dụng phương thức này cho các phần tử định vị, bạn cũng phải tính toán bù đắp: 'var bottom = $ ('# bottom'). Position(). Top + $ ('# bottom'). Offset(). Top + $ ('# bottom ') .outerHeight (true) ' – trnelson

2
var bottom = $('#bottom').position().top + $('#bottom').height(); 
1

Đáy là top + các outerHeight, không phải là height, vì nó sẽ không bao gồm margin hoặc padding.

var $bot, 
    top, 
    bottom; 
$bot = $('#bottom'); 
top = $bot.position().top; 
bottom = top + $bot.outerHeight(true); //true is necessary to include the margins 
4

Những câu trả lời cho đến nay sẽ làm việc .. nếu bạn chỉ muốn sử dụng chiều cao mà không cần đệm, biên giới, vv

Nếu bạn muốn chiếm đệm, biên giới, và lợi nhuận, bạn nên sử dụng .outerHeight.

var bottom = $('#bottom').position().top + $('#bottom').outerHeight(true); 
0
var top = ($('#bottom').position().top) + ($('#bottom').height()); 
9

EDIT: giải pháp này hiện đang trong câu trả lời gốc quá.

Câu trả lời được chấp nhận không hoàn toàn chính xác. Bạn không nên sử dụng hàm position() vì nó liên quan đến cha mẹ. (? Trong hầu hết các trường hợp) Nếu bạn đang làm định vị toàn cầu bạn chỉ nên thêm đỉnh bù đắp với outerheight như vậy:

var actualBottom = $(selector).offset().top + $(selector).outerHeight(true); 

Các tài liệu http://api.jquery.com/offset/

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