0

我正在努力让 if else 语句起作用。

我试图让页面识别它何时位于顶部,并在用户手动滚动到顶部时隐藏页脚。我已经研究了一些方法,但无法让它发挥作用。我的代码与 if else 格式完全错误吗?或者("$html").offset().top如果窗口滚动到顶部,则不是正确的收集方法。

如果已经有人问过这个问题,但我在搜索中找不到它,我深表歉意。

这是我的代码:

$(".releases").click(function(){

if ($("html").offset().top) {

    $("#content").load('content.php #releases');    //load the content into the main ajax div
    $("#banner").stop().animate({
        'background-position-x' : '-700px',
        'background-position-y' : '-500px'}, //background position change
        2000, function()
        {$.scrollTo("#content", 3000); //returns to the main page content
    $("#footer").animate({"bottom": "0px"}, 3000); // animate the footer back into view

});

}

else{

$("#footer").animate({"bottom" : "-150px"}, 3000); //animate footer out of view
$('html, body').stop().animate({ scrollTop: 0 }, 3000, function(){  //bring window to the top
    $("#content").load('content.php #releases');    //load the content into the main ajax div
    $("#banner").stop().animate({
        'background-position-x' : '-700px',
        'background-position-y' : '-500px'}, //background position change
        2000, function()
        {$.scrollTo("#content", 3000); //returns to the main page content
    $("#footer").animate({"bottom": "0px"}, 3000); // animate the footer back into view
    });     
});
});
}
4

1 回答 1

0

jQuery .offset()的定义:

获取第一个元素的当前坐标,或设置匹配元素集中每个元素相对于文档的坐标。

这意味着你得到的是元素的绝对坐标,当你滚动时这些坐标不会改变。

你想要的是 jQuery .scrollTop()

获取匹配元素集中第一个元素的滚动条的当前垂直位置,或为每个匹配元素设置滚动条的垂直位置。垂直滚动位置与在可滚动区域上方的视图中隐藏的像素数相同。如果滚动条位于最顶部,或者元素不可滚动,则此数字将为 0。

此外,您应该将“html”更改为“body”。

将您的 if 替换为:

if ($("body").scrollTop() === 0) { 
...

看看它是否有效。我建议您设置一个 setInterval 或一个调试按钮并登录到控制台以查看您的变量在滚动时如何变化。

此外,正如丹尼尔所说,你似乎在最后缺少一个右括号。

于 2013-10-07T21:11:11.703 回答