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