Question

J'essaie de faire de l'image Rotator avec jQuery, mais mon rotateur ne s'arrêtera pas lorsque je mets la souris sur les images, donc je suppose que quelque chose ne va pas avec le temps clair.
Voici mon code:

$(document).ready(function () {
    var o = 0
    var t = null;
    stop = false;
    $("img:gt(0)").hide();
    broj = ($("img").size());

    function promena() {
        o++;
        if (o == broj) {
            o = 0;
            $("img:lt(3)").hide(function () {
                $("img").eq(3).delay(1000).fadeOut(1000);
            });
        }
        $("img").eq(o).delay(1000).fadeIn(1000, function () {
            t = setTimeout(promena, 1000);
        });
    };

    t = setTimeout(promena, 1000);
    $("div img").mouseover(function () {
        clearTimeout(t);
    });
});

Et voici HTML:

<html>
<head>
<title>M</title>
</head>
<body>
 <div>
 <img src="images/1.jpg"    />
 <img src="images/2.jpg"    />
 <img src="images/3.jpg"    />
 <img src="images/4.jpg"    />
 </div>
</body>
</html>

Si cela signifie quelque chose, toutes mes images sont positionnées absolument avec IMG {Position: Absolute}

Était-ce utile?

La solution

Votre code fait essentiellement ceci:

  1. temporisation du temps mort en marche pendant une seconde
  2. retarder la course pendant une seconde
  3. Fade Course pendant une seconde
  4. répéter

-> Si vous déclenchez l'événement Mouseover, et donc appelez le temps clair à tout moment autre que (1), vous ne nettoyez aucune minuterie en cours d'exécution.

En d'autres termes, si vous faites cela après, disons 1,5 seconde, le retard est toujours en cours d'exécution, alors le fondu, et alors Vous appelez à nouveau SetTimeout - vous essayez donc de ClearTimeout avant d'appeler SetTimeout.

Vous devriez probablement appeler .stop () pour arrêter la file d'attente de retard et de décoloration, et empêcher le fonctionnement de setTimeout lorsqu'ils sont terminés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top