2

ここで何が間違っているのかを理解するのに問題がありました。基本的に、ユーザーがページの上部にいる場合、ドロップダウン メニューは正常に機能しますが、ユーザーがメニューを下にスクロールした瞬間に、クリックしても元に戻りません。

.offset の代わりに .position を使用する回避策があることは知っていますが、ドキュメントをどれだけ読んでも、$(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 に答える