JQuery .scrollTop в операторе if - PullRequest
0 голосов
/ 25 марта 2012
if ($(body).scrollTop() > 120px)
{
    document.getElementByID("head").ID = "headfixed"
}

это не работает, и я не удивлен, но нигде не смотрю, помогает мне то, что я хочу сделать.Могу ли я получить помощь по этому вопросу?заранее спасибо.

Ответы [ 4 ]

6 голосов
/ 08 октября 2012

Вопрос: почему вы используете комбинацию селекторов элементов с jQuery и getElementById?Вот как я бы переписал вашу функцию .... Вы должны поместить это выражение if в функцию, которая происходит, когда что-то происходит.В этом случае, это когда окно прокручивается.

$(window).scroll(function () {
    var $this = $(this),
        $head = $('#head');
    if ($this.scrollTop() > 120) {
       $head.addClass('fixed_header');
    } else {
       $head.removeClass('fixed_header');
    }
});

Имеет ли это смысл?Кроме того, scrollTop не уходит из пикселей, но это целое число.Кстати, только окно и это может идти в паренсе без кавычек ... body, html и т. Д. .... при их выборе нужно заключать их в кавычки.

1 голос
/ 25 марта 2012

Я думаю, что scroll top возвращает целочисленное значение, поэтому ваше значение сравнения должно быть 120, а не 120px.

EDIT:

Кроме того, вы получаете синтаксическую ошибку для 120px, поскольку она не заключена в кавычки? Когда я тестировал в jsfiddle, я получил следующую ошибку в Firebug:

identifier starts immediately after numeric literal

1 голос
/ 25 марта 2012

Я думаю, что значение, которое вы ищете, - .offset().top. Это вернет текущую позицию $elem относительно верха документа.

// below: the offset of the body tag to the top of the page
$("body").offset().top
// below: the offset of the element with the id #head to the top of the page
$("#head").offset().top
0 голосов
/ 13 сентября 2013

Вы должны убедиться, что «если условие» находится в функции прокрутки.

function scroll() {
if ($(body).scrollTop() > 120px)
    {
    document.getElementByID("head").ID = "headfixed"
    }
}
...