2

我一直在弄清楚我在这里做错了什么时遇到了问题。基本上,如果用户位于页面顶部,下拉菜单可以正常工作,但是用户向下滚动菜单的那一刻在单击时不会缩回。

我知道有一种使用 .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);
}
});
});​

在这里,它在小提琴中

我确信解决方案很简单,但是我很难开始将 Jquery 脚本串在一起——这比我迄今为止学到的任何其他东西都花费了我更长的时间,正如你可以想象的那样(或者不是!)真的很令人沮丧。

4

1 回答 1

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;
  } 

});});​​
于 2012-08-10T11:09:24.360 回答