元素的scrollheight给出未定义的值

时间:2012-02-22 09:25:46

标签: javascript jquery

在一个元素中,我给了CSS overflow: scroll;。现在在jQuery中我希望它具有原始高度(包含所有子元素的高度)。这个元素下的孩子是动态变化的。我想在滚动事件上有高度。 这是代码:

$("#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()));
}

问题:它引发scrollHeight is undefined错误。怎么了?

3 个答案:

答案 0 :(得分:36)

jQuery中没有scrollHeight - 它是scrollTop()

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

或者,如果要使用本机scrollHeight属性,则需要直接访问jQuery对象中的DOM元素,如下所示:

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

答案 1 :(得分:10)

如果您使用的是Jquery 1.6或更高版本,请使用prop访问该值。

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

之前的版本用于从attr获取值,但不是在1.6之后。

答案 2 :(得分:0)

$('#div')['prevObject'][0]['scrollingElement'].scrollHeight;

尝试打印console.log($('#div'),它返回与该div或任何HTML元素相关的所有属性