2011-11-03 3 views
1

J'ai configuré la fonction this pour afficher une div à la fois ciblée dans la navigation.Empêche la double exécution d'une fonction jquery?

$(document).ready(function(){ 
    $('.div1, .div2').hide(); 
    $("nav a").hover(function() { 
    var name= this.name; 
    $("."+name).fadeIn().siblings().hide(); 
    }); 
}); 

Cette fonction fonctionne, mais si je passe très vite beteween mon élément de navigation, il peut arriver que div1 et div2 apparaissent en même temps.

Comment puis-je empêcher cela?

Merci.

Répondre

2

Ajoutez un appel à stop pour arrêter l'animation existante avant de la masquer.

$(document).ready(function(){ 
    $('.div1, .div2').hide(); 
    $("nav a").hover(function() { 
    var name= this.name; 
    $("."+name).fadeIn().siblings().stop(true, true).hide(); 
    }); 
}); 
+0

Parfait! Une solution aussi élégante et facile. Très bon à savoir pour les futurs scripts. Merci beaucoup! – Melros

+0

Oh, je viens de reconnaître que l'animation s'arrête à un moment donné si je passe à la vitesse rapide et qu'une div pourrait s'arrêter à la moitié de l'opacité et ne récupèrerait pas. Comment ça arrive? Peut-être réécrire le script une solution solide? – Melros

+0

Avez-vous essayé de passer 'true' comme deuxième paramètre à' stop', comme indiqué dans la documentation? –

Questions connexes