在if语句中使用JQuery .scrollTop

时间:2012-03-24 20:14:22

标签: jquery if-statement scroll

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

这不起作用,我并不感到惊讶,但我无处可看,帮助我做我想做的事情。我可以得到一些帮助吗?提前谢谢。

4 个答案:

答案 0 :(得分:6)

问题:为什么你要使用元素选择器和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不会偏离像素,但它是一个整数。顺便说一句,只有窗口,这可以进入没有引号的parens ... body,html等......在被选中时需要在它们周围引用。

答案 1 :(得分:1)

我认为您正在寻找的价值是.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

答案 2 :(得分:1)

我认为滚动顶部返回一个整数值,因此您的比较值应为120而不是120px。

编辑:

此外,您是否收到120px的语法错误,因为它没有用引号括起来?当我在jsfiddle中测试时,我在Firebug中遇到以下错误:

identifier starts immediately after numeric literal

答案 3 :(得分:-1)

你必须确保'if condition'在滚动功能中。

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