Javascript 元素的滚动高度给出了未定义的值

Javascript 元素的滚动高度给出了未定义的值,javascript,jquery,Javascript,Jquery,在我给出的一个元素中,CSSoverflow:scroll。现在在jQuery中,我想要它的原始高度(包含所有子元素的高度)。此元素下的子元素正在动态更改。我想有高度的滚动事件。 代码如下: $("#container").scroll(function(e) { scrollAll(); }); function scrollAll(){ var elemHeight = $("#container").scrollHeight; var scrollHeight =

在我给出的一个元素中,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
错误。怎么了?

jQuery中没有
scrollHeight
——它是
scrollTop()

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

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

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

$("#container").prop('scrollHeight')
以前的版本用于从attr获取值,但不是post 1.6

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

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

,很好,现在工作正常,您能告诉我$(“#container”)[0]和$(#container”)的区别吗。
$(#container”)
返回包装在jQuery对象中的元素,
$(#container”)[0]
返回DOM元素本身。
$('#div')['prevObject'][0]['scrollingElement'].scrollHeight;