Одинаковые значения $(document).height() и $(window).height()

263
25 марта 2017, 00:33

В силу определенных обстоятельств, пытаюсь написать скрипт (знаю, что обычно это делают с помощью стилей, но в моем случае стили были написаны до меня и ни один из примеров, найденных в Google не подходит, потому что если начинаю менять параметры стили body и т.д., верстка падает), для того, чтобы прибить footer к низу страницы (на тех страницах, где маленький контент-блок).

Нашел неплохое решение:

$(document).ready(function func() {
    if ($(document).height() <= $(window).height()) {
        console.log('snuggle func!');
        $("footer").addClass("navbar-fixed-bottom");
    }
});

На коротких страницах все хорошо - footer приклеивается к низу страницы. Однако на больших страницах скрипт также подкидывает в footer "navbar-fixed-bottom"(хотя по идее так быть не должно). В console.log при загрузке $(document).height() и $(window).height() одинаковые, что странно. Вбил в консоли разработчиков эти команды и только тогда получил нормальные значения (разумеется на больших страницах $(document).height() > $(window).height()). Тем не менее скрипт выдает при загрузке страницы одинаковые значения.

Почему так происходит? И как можно решить данный вопрос?

Answer 1

если контент отрисовывается после выполнения сего кода, то код сначало добавит класс, потом отобразит "длинный" контент (а класс то никто уже не удалит).

Думаю разумнее сделать функцию

function updateFooterClass() {
   $("footer").toggleClass("navbar-fixed-bottom", $(document).height() <= $(window).height());
}

и вызывать её не только по $(document).ready() но и по каким-то событиям обновления контента. На крайний случай

(document).ready(function() {
    setInterval(updateFooterClass, 1000);
});
READ ALSO
Использование callback

Использование callback

Добрый вечер, подскажите пожалуйста, имеется допустим три функции : foo1() foo2() foo3() Необходимо запустить их линейно, друг за другом, пытался сделать...

278
Определить id массива

Определить id массива

Есть список с чекбоксами и массив вида arr{id: i; person: name; state: notActive}Как сделать, чтобы при нажатии на определенный чекбокс state: not становился state:...

252
Загрузка страницы с SVG файлами

Загрузка страницы с SVG файлами

Здравствуйте, у меня такая проблема, что при загрузке страницы svg файлы сначала разносятся на всю страницу, а уже потом подгоняются в заданный...

392