jQuery .offset视口问题的顶部

时间:2012-08-10 10:43:20

标签: jquery scroll offset

我一直在解决我在这里犯错的问题。基本上,如果用户位于页面顶部,则下拉菜单可以正常工作,但用户向下滚动菜单的时间不会在单击时缩回。

我知道有一个使用.position而不是.offset的解决方法,但无论我阅读了多少文档,我都无法解决如何将$(window)添加到.offset

这是我到目前为止所得到的:

$(document).ready(function() {
$('.title-bar, #menu-wrap').click(function() {
if($('#menu-wrap').offset().top === 0){
    $('#menu-wrap').stop().animate({top:'-300px'}, 1000);
} else {
    $('#menu-wrap').stop().animate({top:'0px'}, 1000);
}
});
});​

这里是fiddle

我确信解决方案很简单,但是我很难将Jquery脚本拼接在一起 - 这比我到目前为止学到的任何东西都要长,这是你可以想象的(或不!)真的很令人沮丧。

1 个答案:

答案 0 :(得分:2)

这是因为在进行滚动时offset()位置会发生变化。 试试这个代码吧

$(document).ready(function() {
$('.title-bar, #menu-wrap').click(function() {

  if($('#menu-wrap').offset().top - $(window).scrollTop() === 0){
    $('#menu-wrap').stop().animate({top:'-300px'}, 1000);
  } else {
    $('#menu-wrap').stop().animate({top:'0px'}, 1000);
    $('#menu-wrap').offset().top = 0;
  } 

});});​​