2012-09-18 6 views
5

ユーザーが1000pxをスクロールすると固定メニューを表示したいが、jQuery/JSではそれほど経験がない。私はこのような何かが働くだろうと思ったが、それは何もやっていません。1000pxをスクロールした後にCSSクラスを変更する

HTML:

<div id="menu">[MENU_WILL_GO_HERE]</div> 

STYLE:

#menu{display:none;}​ 

JQ:

var fixed = false; 
​$(document).scroll(function() { 
    if($(this).scrollTop() > 100) { 
     if(!fixed) { 
      fixed = true; 
      $('#menu').css({position:'fixed', display:'block'}); 
     } 
     } else { 
      if(fixed) { 
       fixed = false; 
       $('#menu').css({display:'none'}); 
     } 
    } 
});​ 

Q:

理由はこれは動作しません?コードはhttp://jsfiddle.net/roXon/psvn9/1/の例であり、そのサンプルを空のhtmlページにそのままコピーして貼り付けても、最新のjqueryライブラリのリンクと共にjsfiddleページのように動作しません。私は何を見落とすことができますか?

答えて

17

あなたの括弧はあなたの例では間違っている、しかしかかわらず、あなたはあなたのコードを簡素化することができます。

CSS

#menu { 
    display : none; 
    position : fixed; 
} 

JS

$(document).scroll(function() { 
    $('#menu').toggle($(this).scrollTop()>1000) 
});​ 

デモhttp://jsfiddle.net/elclanrs/h3qyV/1/

+4

から、これによる100pxに表示されます: '$( '#メニュー')トグル($ (this).scrollTop()> 1000) 'を返します。 http://jsfiddle.net/elclanrs/h3qyV/1/ – elclanrs

+0

ああ、古いトグル私はあなたを無視しましたか?正直言って、それはブールパラムを忘れた。良いキャッチ、友達。 – AlienWebguy

+0

これは私が欲しいものですが、どのページでもスクリプトを実行することはできません。特定のタグ内にあるか、またはHTMLコードの前後にある必要がありますか?なぜそれが実行されていないのかわかりませんし、それはフィドルからまったく同じコードです。 – taylor

0

編集この

if($(this).scrollTop() > 1000) 

ようにあなたは1000pxスクロールを探しているが、それはより短く、コード

関連する問題