2012-08-10 43 views
2

我一直在解決我在這裏做錯了什麼問題。基本上,如果用戶位於頁面的頂部,則下拉菜單可以正常工作,但用戶向下滾動菜單的時間不會在點擊時收起。jQuery .offset視口問題頂部

我知道有使用.POSITION代替.offset一種解決方法,但不管我有多文檔閱讀,我不能工作了如何在加$(窗口).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腳本串在一起的擺動 - 這比我學到的任何東西都花費更多時間到目前爲止,正如你可以想象的那樣(或不是!)真的很令人沮喪。

回答

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

});});​​ 
+0

這個偉大的工程,但我的服務器上,它會只與'$(窗口).load工作(函數()''之前的$(document).ready' - 謝謝你非常喜歡@ ssilas777 – gimme5 2012-08-10 13:32:05