2012-02-22 19 views
10

Trong một phần tử tôi đã cung cấp CSS overflow: scroll;. Bây giờ trong jQuery tôi muốn có chiều cao ban đầu của nó (có chứa chiều cao của tất cả các phần tử con). Trẻ em dưới yếu tố này đang thay đổi động. Tôi muốn có chiều cao về sự kiện cuộn. Đây là mã:scrollheight của một phần tử cho giá trị không xác định

$("#container").scroll(function(e) { 
    scrollAll(); 
}); 

function scrollAll(){ 
    var elemHeight = $("#container").scrollHeight; 
    var scrollHeight = $("#scrollbars").scrollHeight; 
    var ratio = elemHeight/scrollHeight; 

    $("#outup").html(elemHeight +" and "+ scrollHeight +" ratio "+ ratio +" = "+ ($("#container").scrollTop())); 
} 

Vấn đề: Nó ném scrollHeight is undefined lỗi. Chuyện gì vậy?

Trả lời

34

Không có scrollHeight trong jQuery - đó là scrollTop():

var elemHeight = $("#container").scrollTop(); 
var scrollHeight = $("#scrollbars").scrollTop(); 

Ngoài ra nếu bạn muốn sử dụng bản địa scrollHeight thuộc tính, bạn cần truy cập vào phần tử DOM trong đối tượng jQuery trực tiếp, như thế này:

var elemHeight = $("#container")[0].scrollHeight; 
var scrollHeight = $("#scrollbars")[0].scrollHeight; 
+0

Tôi đã trải qua, http://stackoverflow.com/questions/8100099/checking-for-scrollheight-of-an-element-sometimes-returning-0 –

+0

Tuyệt vời hoạt động ngay bây giờ, bạn có thể cho tôi biết những gì là sự khác biệt trong $ ("# container") [0] và $ ("# container"). –

+6

'$ (" # container ")' trả về phần tử được bọc trong một đối tượng jQuery, '$ (" # container ") [0]' trả về chính phần tử DOM. –

10

Nếu bạn đang sử dụng Jquery 1.6 trở lên, hãy sử dụng giá trị prop để truy cập giá trị.

$("#container").prop('scrollHeight') 

Phiên bản trước được sử dụng để lấy giá trị từ attr nhưng không được đăng 1.6.

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