2011-07-10 3 views
2

J'ai this diaporama jquery basé et fonctionne très bien, l'auteur a même mis dans un paramètre de randomisation qui est ce dont j'avais besoin. Cela fonctionne très bien sauf qu'il ne randomise pas la première diapositive. Des idées? Merci :)Randomiser la première image de ce diaporama?

Voici les js: (ou aller à la original page pour plus d'informations)

function slideSwitch() { 
    var $active = $('#slideshow DIV.active'); 

    if ($active.length == 0) $active = $('#slideshow DIV:last'); 

    // use this to pull the divs in the order they appear in the markup 
    // var $next = $active.next().length ? $active.next() 
    // : $('#slideshow DIV:first'); 

    // uncomment below to pull the divs randomly 
var $sibs = $active.siblings(); 
var rndNum = Math.floor(Math.random() * $sibs.length); 
var $next = $($sibs[ rndNum ]); 


    $active.addClass('last-active'); 

    $next.css({opacity: 0.0}) 
     .addClass('active') 
     .animate({opacity: 1.0}, 1000, function() { 
      $active.removeClass('active last-active'); 
     }); 
} 

$(function() { 
    setInterval("slideSwitch()", 20000); 
}); 

HTML:

<div id="slideshow"> 
    <div class="active"> 
     <img src="img/img1.jpg" /> 
    </div> 
    <div> 
     <img src="img/img2.jpg" /> 
    </div> 
    <div> 
     <img src="img/img3.jpg" /> 
    </div> 
</div> 
+0

'Essayez var $ SIBS = $ active.siblings() andSelf()' pour sélectionner tous les éléments. Je ne sais pas si c'est le problème. –

Répondre

1

On dirait qu'il randomizes que les frères et sœurs de la diapositive active, sans inclure la diapositive active en cours, qui est le premier lorsque vous chargez la page. Vous pouvez corriger le code du plugin, ou être paresseux comme je le serais, et randomiser ces images avant d'initialiser le diaporama. Utilisez un plugin comme celui de la réponse ici: Randomize a sequence of div elements with jQuery

0

Essayez quelque chose comme randomiser.

function slideSwitch() { 
     var $active = $('#slideshow div').eq(Math.floor(Math.random() * $('#slideshow div').length); 
     $(".active").removeClass("active"); 
     $active.addClass("active"); 

     if ($active.length == 0) $active = $('#slideshow DIV:last'); 

     // use this to pull the divs in the order they appear in the markup 
     // var $next = $active.next().length ? $active.next() 
     // : $('#slideshow DIV:first'); 

     // uncomment below to pull the divs randomly 
    var $sibs = $active.siblings(); 
    var rndNum = Math.floor(Math.random() * $sibs.length); 
    var $next = $($sibs[ rndNum ]); 


     $active.addClass('last-active'); 

     $next.css({opacity: 0.0}) 
      .addClass('active') 
      .animate({opacity: 1.0}, 1000, function() { 
       $active.removeClass('active last-active'); 
      }); 
    } 

    $(function() { 
     setInterval("slideSwitch()", 20000); 
    }); 
+0

Merci pour les réponses les gars, je n'ai pas essayé vos solutions depuis que je l'ai eu à travailler avec un simple php: Remplacer la première image div « » ^ qui randomise le premier chargé image sur la page de chargement avec img1.jpg, img2.jpg, et img3.jpg, donc combiné avec la randomisation javascript après que la première image a été chargée, vous vous retrouvez avec une ranomisation complète :). Sale, mais ça marche pour moi. – user837433

Questions connexes