2010-05-19 6 views
2

J'ai le code jQuery suivantretard jQuery ne fonctionne pas comme prévu

$("#dropdown").hover(function() { 
     $(this).stop(true,true).fadeTo('fast',1); 
     $("#options").stop(true,true).slideDown(); 
    }, function() { 
     $(this).delay(1000).stop(true,true).fadeTo('fast',0.1); 
     $("#options").delay(1000).stop(true,true).slideUp(); 
    } 
); 

Ce que je pense arriver est quand la souris quitte #dropdown il attendra 1 seconde avant de continuer. Cela n'arrive pas. Ce que j'essaye de réaliser, au cas où il y aurait un meilleur moyen, est de laisser le menu déroulant visible pendant une seconde ou deux après avoir déplacé votre souris et je voudrais également empêcher que les événements se reproduisent pour empêcher artefacts et "funnies" si vous deviez déplacer la souris très rapidement à partir de la div

+0

Une note: les durées doivent être donnés en millisecondes à des routines comme 'fadeTo' – Pointy

+0

@Pointy: 1 et 0,1 sont des valeurs d'opacité – jAndy

+0

@jAndy oh Durr; Merci. Peu importe, @Chris. – Pointy

Répondre

0

Vous pouvez toujours aller lo-tech avec setTimeout.

var dropDownElement = $(this); 
setTimeout(function() 
{ 
    dropDownElement.fadeTo('fast', 0.1); 
    // Other Code 
}, 1000); 
1

Vos appels à stop ne sont pas placés sur la file d'attente d'animation - ils courent immédiatement. Je ne suis pas sûr que vous en ayez vraiment besoin dans la routine "hover out".

modifier enlevé mutité

Questions connexes