2009-10-06 7 views
3

J'ai un effet de fondu à bascule, mais lorsque vous cliquez plusieurs fois sur le bouton, il se fane plus d'une fois. (Donc, si je clique sur l'identifiant de fondu 20 fois rapidement, il va disparaître et disparaître plusieurs fois) Comment est-ce que j'arrêterais ceci et ferais en sorte que vous ne puissiez basculer le fondu que lorsque l'animation sera terminée? J'ai essayé d'obtenir la valeur actuelle et de faire une déclaration, mais si cela n'a pas fonctionné: * (Arrêt d'une fonction jquery à plusieurs reprises

Merci

jQuery.fn.fadeToggle = function(speed, easing, callback) { 
    return this.animate({opacity: 'toggle'}, speed, easing, callback); 
}; 



$(document).ready(function() { 
    $('.open').click(function() { 
    $('#fadeMe').next().fadeToggle('slow'); 
    }); 
}); 

Répondre

6

Vous devez vérifier si l'élément est pas: animé, le cas échéant invoquer la .animate :

<body> 
    <button class="open">open</button><br> 
    <div id="fadeMe">fade me!</div> 
    <style>#fadeMe { 
    width:20em; 
    height:10em; 
    background:black; 
    color:#fff; 
    }</style> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    <script> 
    jQuery.fn.fadeToggle = function(speed, easing, callback) { 
     return this.animate({opacity: 'toggle'}, speed, easing, callback); 
    }; 



    $(document).ready(function() { 
     $('.open').click(function() { 
     var el = $('#fadeMe').next(); 
     if (!el.is(':animated')) { 
      $(el).fadeToggle('slow'); 
     } 
     }); 
    }); 
    </script> 
    </body> 

Demo:. http://jsbin.com/irare

+0

solution mise à jour. –

+0

Sweet ça marche :) – PHPNooblet

+0

Cela répond à la question ... mais regardez stop() répondre ci-dessous ... c'est ce que la plupart des gens veulent dans cette situation. – ndp

3

Utilisez .stop() Ce arrête toutes les animations sur un élément

.
$('#fadeMe').next().stop().fadeToggle('slow'); 
Questions connexes