为什么.scrollHeight的工作方式如此?

时间:2014-11-27 21:38:52

标签: jquery

$('#div1').scrollTop($('#div1')[0].scrollHeight)

我的意思是,为什么我们需要在所选元素之后指定[0]。它表明了什么?它似乎没有指示div元素的子元素,因为[1]即使有更多的子元素也未定义。如果我发出警报(('#div1')[0]),它会显示[object HTMLDivElement]。 我实际上从未在jQuery中看到过这种索引。所以我想知道这个索引零表示什么,以及在其他情况下使用它?我会感激任何帮助。

1 个答案:

答案 0 :(得分:1)

.scrollHeight 不是 jQuery的方法http://api.jquery.com/scrollHeight/
Element.scrollHeight JavaScript 方法,返回

  

元素内容的高度,包括因溢出而在屏幕上看不到的内容

由于您将选择器"#div1"传递给jQuery对象$( ),所以 它将返回HTMLElements的数组对象集合

$('#div1') // [object Object] { 0: [object HTMLDivElement] { ...obj props...}}
              ^--Object Array   ^--key 0   ^--Element Obj. ^--Obj. properties

因此

[object Object].scrollHeight    // undefined

但如果您从该数组到达代表 HTMLDivElement [0]

[object Object][0].scrollHeight // 800

您可以访问{...obj props...}就是其中之一的特定元素所需的对象属性scrollHeight

回顾

(JS):

var el = document.getElementById("div1"); // HTMLDivElement
var sh = el.scrollHeight;                 // 800

(jQuery的)

var el = $("#div1");                      // Object Array (note the difference)
var sh = el.scrollHeight;                 // undefined
var sh = el[0].scrollHeight;              // 800

要在普通jQuery (v.1.6 +)中获取元素scrollHeight,您可以

var sh = $("#div1").prop('scrollHeight'); // 800