2010-11-15 73 views
24

jQuery có một hàm gọi là scrollTop có thể được sử dụng để tìm số lượng pixel ẩn bên trên chế độ xem trang hiện tại.Đối diện với "scrollTop" trong jQuery

Tôi không thực sự chắc chắn tại sao, nhưng không có hàm scrollBottom trả về số điểm ảnh bên dưới chế độ xem trang hiện tại.

Có plugin jQuery bổ sung chức năng này không? Hoặc là nó sẽ đòi hỏi một số toán học phức tạp với chiều cao cửa sổ/tài liệu và giá trị scrollTop?

+6

toán Xây dựng? Không phải là [chiều cao tài liệu] - [scrollTop] - [chiều cao cửa sổ]? –

+0

@StevePaulo Bạn có lẽ không nên sử dụng chiều cao tài liệu cùng với chiều cao cửa sổ. Điều đó sẽ gây ra sự hỗn loạn giữa các trình duyệt. –

Trả lời

35

Bạn có thể làm một plugin khá đơn giản cho việc này:

$.fn.scrollBottom = function() { 
    return $(document).height() - this.scrollTop() - this.height(); 
}; 

Sau đó, gọi nó trên bất kỳ yếu tố nào bạn muốn, ví dụ:

$(window).scrollBottom(); //how many pixels below current view 
$("#elem").scrollBottom(); //how many pixels below element 
+0

Lạ, trong trường hợp của tôi '$ (cửa sổ) .scrollBottom();' trả về giá trị âm: nó là '-1 * $ (cửa sổ) .scrollTop(); ' – Abdull

+2

Tôi thấy vấn đề của mình: Tôi gặp phải vấn đề này: http : //stackoverflow.com/q/12103208/923560. Tệp HTML của tôi thiếu một tuyên bố về loại tài liệu. Giải pháp là thêm '' vào đầu tệp HTML. – Abdull

0

Bạn có thể thử scrollTo plugin và làm điều gì đó như:

$.scrollTo(document.height) 
0
function scrollBottom() 
{ 
    return $(window).scrollTop() + $(window).height(); 
} 

// example usage 
$('#footer').css('top', scrollBottom() - $('#footer').height()); 
0

Khi hành vi mặc định của scrollTop cuộn xuống 0 khi chuyển một giá trị âm, tôi đã thực hiện chức năng này xử lý scrollTop và mô phỏng "scrollDown".

Nếu anchor_pos là tiêu cực (do đó, nó ở trên vị trí cuộn hiện tại của tôi), tôi trừ đi giá trị của nó từ vị trí cuộn hiện tại (vì nó có một giá trị âm, tôi đang sử dụng + dấu)

function jumpToAnchor(scrollable_div_selector, anchor_selector) 
{ 
    anchor_pos = $(anchor_selector).position().top; 

    //check if negative number 
    if (anchor_pos < 0) 
    { 
     anchor_pos = $(scrollable_div_selector).scrollTop() + anchor_pos; //anchor_pos is negative, so i'm substracting it 
    } 

    $(scrollable_div_selector).scrollTop(anchor_pos); 
} 
0

Đây là cách tôi đã tính toán khoảng cách từ đáy của nguyên tố này vào dưới cùng của tài liệu:

$(document).height() - ($('#element').offset().top + $('#element').height()); 
1

Nếu bạn muốn di chuyển xuống (Đối diện của “scrollTop”), hãy thử để sử dụng vị trí thẳng đứng trên đối số. Như thế này:

$(document).ready(function(){ 
    $("button").click(function(){ 
          //position on pixeles 
     $("body").scrollTop(1300); 
    }); 
}); 

Phía trên cùng của cơ thể, sẽ là: $("body").scrollTop(0);

0

thử điều này:

return this[0].scrollHeight - this.scrollTop() - this.height(); 
Các vấn đề liên quan