2012-09-18 13 views
5

Chcę, aby stałe menu pojawiło się w lewej kolumnie mojej witryny, gdy użytkownik przewinie 1000px w dół, ale nie mam dużego doświadczenia z jQuery/JS. Myślałem, że coś jak to będzie działać, ale nie robi nic:Zmiana klasy CSS po przewinięciu 1000px w dół

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:

Czy istnieje dlaczego to nie działa? Kod jest przykładem na http://jsfiddle.net/roXon/psvn9/1/, a nawet gdy kopiuję/wklejam ten przykład dokładnie tak, jak na pustą stronę html, z linkiem do najnowszej biblioteki jquery, nadal nie działa tak jak na tej stronie jsfiddle. Co mogłem przeoczyć?

Odpowiedz

17

Twoje szelki są błędne w przykładzie, ale niezależnie, można uprościć kod:

CSS:

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

JS:

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

Demo : http://jsfiddle.net/elclanrs/h3qyV/1/

+4

jeszcze krótszy. '$ ('Menu #') przełączyć ($ (this) .scrollTop()> 1000) '. http://jsfiddle.net/elclanrs/h3qyV/1/ – elclanrs

+0

Ach, stary, dobry, jak cię zaniedbywałem? Szczerze mówiąc zapomniałem, że wziął bool param. Dobry połów, przyjacielu. – AlienWebguy

+0

Dokładnie to, czego chcę, ale nie mogę uruchomić skryptu na żadnej stronie. Czy musi znajdować się w określonym znaczniku lub być przed lub po kodzie HTML? Nie mogę zrozumieć, dlaczego to nie działa i jest to ten sam kod z skrzypiec. – taylor

0

Edycja jak ten

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

szukasz 1000px przewijania, ale wydaje 100px ze względu na to, z kodu

Powiązane problemy