Salut !

Tout d'abord voici mon code !

$(function() {

var $carrousel = $('.carrousel'), // on cible le bloc du carrousel
    $img = $('.header-titre'), // on cible les images contenues dans le carrousel
    indexImg = $img.length - 1, // on définit l'index du dernier élément
    i = 0, // on initialise un compteur
    $currentImg = $img.eq(i); // enfin, on cible l'image courante, qui possède l'index i (0 pour l'instant)
$img.css('display', 'none'); // on cache les images
$currentImg.css('display', 'block'); // on affiche seulement l'image courante
            // $carrousel.append('<div class="controls"> <span class="prev">Precedent</span> <span class="next">Suivant</span> </div>');
$('.navg').click(function(){ 

        if(i < indexImg) {

        i++;
 }
        else { i=0;
}

        $img.css('display', 'none');

                $currentImg = $img.eq(i);
        $($currentImg).fadeIn('slow');
        $currentImg.css('display', 'block');

});

});

Tout marche, maius losque je clique sur le bouton comme un fou, cela bug ?, cela vient du fadeIn !
Il faudrait que je puisse paramétrer le clic pour pas que l'on appuie comme un déchaîné ou alors mon code n'est pas bon ?, pour le fade ?

Merci d'avance !

Ps: il me semble que sur un tuto il en parle du même problème que moi mais je ne sais plus la vidéo...

2 réponses


Pakito
Réponse acceptée

Quand tu il y a de l'animation, que ce soit avec des anims prédéfinies (fadeIn, fadeOut, etc) ou avec la propriété CSS, les anims se retrouvent en file d'attente en cas de clic multiple.

jQuery prévoit une fonction pour contrôler ce problème : .stop()
Cette fonction a pour effet d'arrêter toutes les animations en cours pour l'élément sélectionné. On peut également lui spécifier de vider la file d'attente ou d'aller à la dernière animation de la file d'attente. Tout est dans la doc.

Bon courage ;)

razor7
Auteur

Pakito --> Tu as raison !
Moi je pensais qu'il fallait définir un temps entre les clics mais non c'est toi qui a raison et c'est plus simple encore :)

Merci Pakito