Domanda

Questa sembra davvero gonfio, può essere riscritta meglio / più compatta:

$("#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();
    });

Grazie!

È stato utile?

Soluzione

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

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

E 'un piccolo miglioramento, però. Non riuscivo a immaginare il rapporto tra il #cart-summary ei .flycarts.

Altri suggerimenti

In breve, no. Tuttavia, si può fare senza la funzione hover vuoto: basta usare mouseenter() e mouseleave() . mouseover e mouseout hanno sottili differenze a mouseenter e mouseleave. Guardate l'API di jQuery per maggiori informazioni.

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

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

$('.flycart a.close').click(function()
{
    $(this).parents('.flycart').hide();
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top