2012-09-18 29 views
5

Quiero que aparezca un menú fijo en la columna izquierda de mi sitio una vez que el usuario se desplace 1000px hacia abajo, pero no tengo mucha experiencia con jQuery/JS. Pensé que algo así iba a funcionar, pero no hace nada:Cambiar la clase CSS después de desplazarse 1000px hacia abajo

HTML:

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

ESTILO:

#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:

¿Hay un ¿Por qué esto no funciona? El código es un ejemplo en http://jsfiddle.net/roXon/psvn9/1/, e incluso cuando copie/pegue ese ejemplo exactamente como está en una página html en blanco, con un enlace de la biblioteca jquery más reciente, todavía no funciona como lo hace en esa página jsfiddle. ¿Qué podría estar pasando por alto?

Respuesta

17

Sus frenos son mal en su ejemplo, pero sin tener en cuenta, se puede simplificar el código:

CSS:

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

JS:

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

demostración : http://jsfiddle.net/elclanrs/h3qyV/1/

+4

aún más corto:. '$ ('# Menú') alternar ($ (esto) .scrollTop()> 1000) '. http://jsfiddle.net/elclanrs/h3qyV/1/ – elclanrs

+0

Ah, viejo alternar, ¿cómo te he descuidado? Honestamente me olvidé que tomó un bool param. Buena captura, amigo. – AlienWebguy

+0

Esto hace exactamente lo que quiero, pero no puedo ejecutar el script en ninguna página. ¿Tiene que estar en una determinada etiqueta o debe estar antes o después del código HTML? No puedo entender por qué no se está ejecutando y es exactamente el mismo código del violín. – taylor

0

Editar como esto

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

que están buscando 1000px de desplazamiento, pero parece 100px debido a esto, a partir del código

Cuestiones relacionadas