2009-10-01 14 views
0

Cela ressemble vraiment pléthorique, peut-il être réécrite mieux/plus compact:simple vol stationnaire jQuery Menu

$("#cart-summary").hover(
     function() { 
     $('.flycart').slideDown('fast'); 
     } 
    ); 
    $(".flycart").hover(
     function() {}, // mousein function not required 
     function() { // hide menu on mouseout 
     $('.flycart').slideUp('fast'); 
     } 
    ); 
    $('.flycart a.close').click(function(){ 
     $(this).parents('.flycart').hide(); 
    }); 

Merci!

+0

N'est-ce pas compact? – rahul

+0

Non, par rapport à la réponse acceptée. :-) – 3zzy

Répondre

2
$("#cart-summary").mouseenter(function() { 
    $('.flycart').slideDown('fast'); 
}); 

$(".flycart") 
    .mouseleave(function() { 
     $(this).slideUp('fast'); 
    }) 
    .find('a.close') 
     .click(function(){ 
      $(this).parents('.flycart').hide(); 
     }); 

C'est une petite amélioration, cependant. Je ne pouvais pas deviner la relation entre le #cart-summary et le .flycart s.

1

En bref, non. Cependant, vous pouvez faire sans la fonction de survol vide: il suffit d'utiliser mouseenter() et mouseleave(). mouseover et mouseout ont des différences subtiles à mouseenter et mouseleave. Regardez l'API jQuery pour plus d'informations.

$("#cart-summary").mouseenter(function() 
{ 
    $('.flycart').slideDown('fast'); 
}); 

$(".flycart").mouseleave(function() 
{ 
    $(this).slideUp('fast'); 
}); 

$('.flycart a.close').click(function() 
{ 
    $(this).parents('.flycart').hide(); 
});