J'ai eu ce même problème il était une fois. Vous ne pouvez pas vraiment utiliser les fonctions animées de jQuery car elle veut toujours compléter l'animation. Alors, je l'ai écrit ma propre fonction pour elle .. espère que cela aide (aussi je ne m'y attendais pas à partager ce jour, il a été écrit pour être adapté à la façon dont je l'utilise):
//Custom fade effects.
//Similar to jQuery's fadeIn & fadeOut
//Except that it doesn't queue animations, and can cut the animation short at anytime
//Highly useful for quickly hovering over elements and desiring the fade effects to be cut on hover in/out.
function fade(elem, interval)
{
if(!(elem instanceof $)) {
elem = $(elem);
}
if(elem.is(':not(:visible)')) {
elem.css('opacity', '0').show();
}
elem.css('opacity', function() {
var current = $(this).data('fadeLevel') || 0;
//normalize - accounts for tiny descrepancies in parsing
if(current < 0) { current = 0; }
if(current > 1) { current = 1; }
$(this).data('fadeLevel', current + interval)
return $(this).data('fadeLevel');
});
if(elem.data('fadeLevel') < 0 || elem.data('fadeLevel') > 1) {
clearTimeout(elem.data('fadeTimer'));
}
}
function fadeIn(elem) { fadeTo(elem, 0.04, 0); }
function fadeOut(elem) { fadeTo(elem, -0.04, 1); }
function fadeTo(elem, interval, level) {
if(!$(elem).data('itemOpen')) {
clearTimeout($(elem).data('fadeTimer'));
$(elem).data('fadeLevel', level).data('fadeTimer', setInterval(function() { fade(elem, interval) }, 30));
}
}
Exemples
http://jsfiddle.net/3AxHb/
Si cela ne fonctionne pas, vous pouvez essayer '.stop()' et recommencer '.fadeOut()'. – Fabian