2011-06-14 9 views
5

Estoy intentando crear un enlace de 'carrito' donde el carrito de la compra se abre al pasar el mouse. Puedo hacer que el carro se abra al pasar el mouse y cerrar cuando se aleja. Sin embargo, no puedo hacer que el bloque de carros permanezca abierto una vez sobrevolado. Quisiera que el bloque de automóviles se abriera y permanezca abierto si pasa sobre él. Verá lo que quiero decir si pasa el mouse sobre el enlace 'carrito' en la esquina superior derecha de esta página.jquery pase el mouse y quédese hasta que salga el mouse

http://dl.dropbox.com/u/4380589/Rococlothing/index.html

El jQuery que estoy usando es:

jQuery('#cart-links .links .first a').mouseover(function(){ 
    jQuery('.block-cart').slideDown(400); 
}).mouseout(function(){ 
    jQuery('.block-cart').slideUp(400); 
}); 

jQuery(".block-cart").mouseover(function(){ 
jQuery(this).show(); 
}).mouseout(function(){ 
jQuery(this).fadeOut("slow"); 
}); 
+1

http://jsfiddle.net/kongr45gpen/K55ct/1/ – kongr45gpen

Respuesta

0
hovered = false; 

jQuery('#cart-links .links .first a').mouseover(function(){ 
    jQuery('.block-cart').slideDown(400); 
}).mouseout(function(){ 
     setTimeout(function(){ 
     if(!hovered) { 
     jQuery('.block-cart').slideUp(400); 
     }}, 250); 
    }); 

jQuery(".block-cart").mouseover(function(){ 
hovered = true; 
}).mouseout(function(){ 
hovered = false; 
jQuery('#cart-links .links .first a').trigger("mouseout"); 
}); 
+0

En realidad, me gusta más la solución de @ kongr45gpen. Utiliza '.mouseleave()', '.mouseenter()', y reorganiza el HTML para que 'block-cart' esté dentro de' # cart-links'. – Detect

+0

Muchas gracias por su ayuda. No pude obtener el bloque de la compra como html para niños, así que opté por "Detectar el repositorio que funciona a la perfección". :) – Glynn

2

necesita cancelar la primera mouseout() por lo que necesitará ajustar la segunda parte de

jQuery(".block-cart").mouseover(function(){ 
jQuery(this).stop(true).show(); 
}).mouseout(function(){ 
jQuery(this).fadeOut("slow"); 
}); 

nota de que el stop, estoy pasando en verdadero así que está limpiando la cola de animación actual. jQuery doc for stop es @http://api.jquery.com/stop/

0

Parece que .block-cart no es un elemento secundario del elemento que desencadena el vuelo estacionario, por lo que para mantener el estado de desplazamiento activo debería estructurar el código HTML de forma que el .block-cart es un elemento secundario del elemento que desencadena el vuelo estacionario.

Por cierto: ¿por qué no utilizar $(this).hover() en lugar de $(this).mouseover().mouseout(), que es un poco más fácil

+0

Hola, gracias por la ayuda, por desgracia, Tengo muchos problemas tratando de hacer que html sea un elemento secundario del elemento requerido. Esto se debe a que el sitio web se basa en el software magento cart y es muy difícil cambiarlo. Pensé que si había una manera de retrasar el mouseout del vuelo estacionario en el enlace del carrito, podría inicializar el movimiento de la función de carro de bloque, por lo tanto, el carro no desaparecería. Es posible – Glynn

Cuestiones relacionadas