2012-09-18 5 views
5

Ich möchte ein festes Menü in der linken Spalte meiner Website angezeigt werden, wenn der Benutzer 1000px scrollt, aber ich bin nicht sehr erfahren mit jQuery/JS. Ich dachte, so etwas wie dies funktionieren würde, aber es ist nichts zu tun:Ändern Sie die CSS-Klasse nach dem Scrollen 1000px nach unten

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:

Gibt es ein Warum funktioniert das nicht? Der Code ist ein Beispiel für http://jsfiddle.net/roXon/psvn9/1/, und selbst wenn ich dieses Beispiel genau so in eine leere HTML-Seite kopiere/einfüge, mit einem Link der neuesten jquery-Bibliothek, funktioniert es immer noch nicht wie auf dieser jfiddle-Seite. Was könnte ich übersehen?

Antwort

17

sind Ihre Zahnspange in Ihrem Beispiel falsch, aber unabhängig, können Sie Ihren Code vereinfachen:

CSS:

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

JS:

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

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

+4

Noch kürzere. '$ ('# Menü') hin- und herzuschalten ($ (this) .scrollTop()> 1000) '. http://jsfiddle.net/elclanrs/h3qyV/1/ – elclanrs

+0

Ah guter alter Toggle wie habe ich dich vernachlässigt? Ehrlich gesagt vergaß es einen bool param. Guter Fang, Freund. – AlienWebguy

+0

Das macht genau das, was ich will, aber ich kann das Skript nicht auf irgendeiner Seite ausführen. Muss es in einem bestimmten Tag sein oder vor oder nach dem HTML-Code sein? Ich kann nicht herausfinden, warum es nicht ausgeführt wird und es ist genau der gleiche Code von der Geige. – taylor

0

bearbeiten wie dieses

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

Sie suchen 1000px blättern, aber es scheint 100px aufgrund dieser, aus dem Code