Scrollheight элемента дает значение undefined

В элементе я дал 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. Что не так?

Ответ 1

В jQuery нет scrollHeight - it scrollTop():

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

Альтернативно, если вы хотите использовать собственное свойство scrollHeight, вам нужно получить доступ к элементу DOM непосредственно в объекте jQuery, например:

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

Ответ 2

Если вы используете JQuery 1.6 или выше, используйте prop для доступа к значению.

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

Предыдущие версии, используемые для получения значения из attr, но не после 1.6.

Ответ 3

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

Попробуйте напечатать console.log($('#div') который возвращает все свойства, связанные с этим div или любым элементом HTML