我一直在解决我在这里犯错的问题。基本上,如果用户位于页面顶部,则下拉菜单可以正常工作,但用户向下滚动菜单的时间不会在单击时缩回。
我知道有一个使用.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脚本拼接在一起 - 这比我到目前为止学到的任何东西都要长,这是你可以想象的(或不!)真的很令人沮丧。
答案 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;
}
});});