2010-06-25 5 views
1

J'utilise le code suivant pour basculer certains éléments sur une page. Le problème est que si un utilisateur clique trop vite, plus d'un panneau s'ouvrira et restera sur la page. Je suppose que c'est parce que j'utilise click() plutôt que toggle() mais afin d'obtenir le plein contrôle de l'animation j'ai opté pour la fonction de clic. Y a-t-il un moyen de contourner ceci? Merci.jQuery Toggle Bug

EDIT: Un autre bug que j'ai trouvé est que lors du chargement de la page, le premier panneau s'estompe puis se reconnecte à cause de .filter(':first').click(); à la fin du code, mais ceci est utilisé pour obtenir l'état actif sur le premier panneau . Des alternatives?

jQuery(document).ready(function() 
       { 
        var tabContainers = $('div.feature > div'); 
        tabContainers.hide().filter(':first').show(); 
        $('div.feature ul.feature-nav li a').click(function() 
        { 
         var ref = this; 
         tabContainers.filter(':visible').fadeOut(500, function() 
         { 
          tabContainers.filter(ref.hash).fadeIn(500); 
         }); 

         $('div.feature ul.feature-nav li a').removeClass('selected'); 
         $(this).addClass('selected'); 

         return false; 

        }).filter(':first').click(); 
       }); 

Répondre

0

bug 2 - vous devez cacher l'élément premier utilisant css ou jquery

+0

Je ne veux pas que l'élément par défaut apparaisse au chargement. Il devrait juste être visible comme d'habitude, et tous les autres éléments cachés. – Cameron

+0

vous devez ne pas exécuter la fonction de masquage dans la fonction de document prêt puis comme cela se cache tout en montrant un - d'où le problème de fondu – matpol

0

Découvrez ce qui définit l'élément comme actif lorsqu'il a été cliqué et le mettre dans cet état par défaut dans le code html code plutôt que la façon dont vous le faites en ce moment.

par exemple. Si l'état actif est que le a contient la classe selected, ajoutez-le au lien que vous voulez activer au chargement de la page.