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