2010-06-12 7 views
0

J'ai parfois des problèmes de survol quand je déplace ma souris rapidement sur des liens qu'elle boucle pendant un certain temps, est-il possible de boucler seulement si la souris est arrêtée et d'arrêter si la souris ne l'est pas.jQuery hover question

 $('ul.display li').hover(function() { 

     $('ul.display li').find('#details').hide(); // hides all deatils div before showing 
     $('#light').delay('800').fadeIn("fast"); // shows div that fades out all other content. 

if($.cookie("switch_thumb") =="thumb_view" || $.cookie("switch_thumb") =="null"){//checks for cookie set for display type 
     $(this).find('#details').delay('900').animate({width:'toggle'}); // grow width 
}else{ 
     $(this).find('#details').delay('900').animate({height:'toggle'}); // grow height 
} 


     }, function() { 

      $('#light').fadeOut("fast"); // dim the light to show all content 
     $('ul.display li').find('#details').hide(); //hide all details 
    return false; // supposed to stop looping. 

     }); 
+0

Avez-vous un exemple de page que nous pouvons lier? '.delay()', bien que pratique, complique vraiment les choses. –

Répondre

0

Découvrez .stop() méthode

+0

Cela causera beaucoup plus de problèmes, pas une bonne idée ici. –

+0

@Nick, ma compréhension est que son problème est la mise en file d'attente des multiples hover .. 'stop (true, true)' ou 'clearQueue()' à la fin devrait prendre soin de cela .. je suis connu pour avoir tort , cependant, avant .. –

+0

Ce n'est pas un problème * évident *, je suis d'accord. '.delay()' complique les choses, ['.delay()' est un simple 'setTimeout()' sur une dequeue] (http://github.com/jquery/jquery/blob/master/src/queue.js # L75), ce qui jette les choses vraiment mal, car bien que vous ayez arrêté l'animation * current *, quand cette minuterie est terminée, elle revient et exécute tout ce qui suit dans la file d'attente après un hover suivant, ça va s'exécuter beaucoup plus tôt. Version courte: ne pas mélanger '.stop()' et '.delay()' sur les mêmes éléments. –

0

J'ai eu un problème similaire une fois. stop() peut aussi fonctionner, mais ce que j'ai fait, c'est d'ajouter une classe "inmotion" à l'élément lors du démarrage d'un fondu, et de l'enlever quand le fondu était terminé. En ignorant les appels de survol quand cette balise était allumée, elle s'assurait que chaque action devait se terminer avant que la prochaine ne puisse commencer.

+0

Commander le sélecteur [': animated'] (http: // api.jquery.com/animated-selector/) :) –