IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Mini slideshow jQuery qui boucle non-stop !


Sujet :

jQuery

  1. #1
    Invité
    Invité(e)
    Par défaut Mini slideshow jQuery qui boucle non-stop !
    Bonjour à tous,

    J'ai deux petit problèmes pour réaliser un slideshow (pourtant très basique).
    Voici le code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ul id="homeSlidshowContainer">
        <li><img src="../img/P(1).png" /></li>
        <li><img src="../img/P(2).png" /></li>
        <li><img src="../img/P(3).png" /></li>
        <li><img src="../img/P(4).png" /></li>
        <li><img src="../img/P(5).png" /></li>
    </ul>

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #homeSlidshowContainer {
        overflow: auto;
        height: 400px;
    }
     
    #homeSlidshowContainer > li {
        position: absolute;
        height: 400px;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $(document).ready(function() {
       $("#homeSlidshowContainer li:gt(0)").hide();
     
       $("#homeSlidshowContainer").click(function (event) {
           var $presentElem = $("#homeSlidshowContainer li:visible");
           var $nextElem = $("#homeSlidshowContainer li:visible").next("li");
     
           if ($nextElem.length < 1) {
               $nextElem = $("#homeSlidshowContainer li:first");
           }       
           $presentElem.fadeOut("slow");
           $nextElem.fadeIn("slow");
           $(this).delay(4000).trigger("click");
           event.stopPropagation();
       });
    });
    En fait le problème que j'ai c'est que lors du clic, tous les " li " défilent en non-stop alors que je n'ai pourtant réalisé qu'un seul clic, précédé d'un délai de 4 secondes (avant dernière ligne du code JavaScript).

    Le second problème est que je ne parviens pas à faire exécuter un clic en boucle, avec ce même délai. Pour faire plus simple, je voudrais que le slideshow affiche les images en boucle sans que l'utilisateur aie à intervenir par un clic de démarrage. Vous me direz, ici c'est pourtant le cas mais c'était pour tester que le code fonctionne bien.

    Si vous pouvez m'éclairer ce serait cool
    Dernière modification par Bovino ; 11/06/2013 à 10h52. Motif: Merci d'utiliser les balises [code] (bouton '#') de l'éditeur !!!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    C'est une subtilité de la méthode .delay().
    Elle ne sert pas à remplacer un setTimeout() mais à retarder les effets suivants dans la pile.
    Tu ne peux pas chainer un effet et un gestionnaire d'événement.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ok j'ai trouvé la solution (si jamais ça peut servir à quelqu'un )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $(document).ready(function() {
        $('#homeSlidshowContainer li:gt(0)').hide();
        launchSlideshow();
    });
     
    function launchSlideshow () {
        var $presentElem = $('#homeSlidshowContainer li:visible');
        var $nextElem = $('#homeSlidshowContainer li:visible').next('li');
        if ($nextElem.length < 1) {
            $nextElem = $('#homeSlidshowContainer li:first');
        }
        $presentElem.fadeOut('slow');
        $nextElem.fadeIn('slow');
        setTimeout("launchSlideshow()", 6000);
    }
    A+ et merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mini Slideshow jquery
    Par Geoffrey74 dans le forum jQuery
    Réponses: 4
    Dernier message: 02/02/2014, 19h45
  2. Un code Jquery qui fonctionne sous une page HTML mais non pas une page XHTML
    Par élève_ingénieur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 10/07/2011, 00h34
  3. AS non exécuté et anim qui boucle
    Par biggief dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 08/12/2009, 11h00
  4. Select qui boucle ou se termine par un Ora-01460
    Par PatriceP dans le forum Oracle
    Réponses: 4
    Dernier message: 29/10/2004, 08h53
  5. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo