J’ai un code simple qui garde un élément visible pendant que la souris le survole et le cache une fois la souris éteinte:
$(".item").hover( function () { $(this).show(); }, function () { $(this).hide(); } );
Je voudrais append un peu de retard avant qu’il se cache, mais en ajoutant $(this).delay(500).hide();
ne semble pas fonctionner …
var my_timer; $(".item").hover( function () { clearTimeout(my_timer); $(this).show(); }, function () { var $this = $(this); my_timer = setTimeout(function () { $this.hide(); }, 500); } );
Voici une démo: http://jsfiddle.net/e3cNK/1/
Si vous souhaitez pouvoir afficher à nouveau l’élément après qu’il ait été masqué, vous souhaitez modifier l’opacité de l’élément plutôt que de modifier son display
. Cela gardera les éléments dans le stream normal de la page afin que lorsque l’utilisateur passe la souris sur l’élément caché, il peut à nouveau afficher:
var my_timer; $(".item").hover( function () { var $this = $(this); $this.text('Mouse-Over'); clearTimeout(my_timer); $this.stop().fadeTo(250, 1); }, function () { var $this = $(this); $this.text('Mouse-Out'); my_timer = setTimeout(function () { $this.fadeTo(250, 0); }, 500); } );
Voici une démo: http://jsfiddle.net/e3cNK/2/
.hide()
sans aucun argument n’utilise pas la queue des effets (et n’aura pas à attendre .delay()
). Au lieu de cela, vous pouvez utiliser $(this).delay(500).hide(0);