[jQuery] Plusieurs Slidershow / page

Fermé
i_can - Modifié par i_can le 10/03/2012 à 23:29
Bonsoir,

Bonsoir;
En commençant, je dois reconnaître que je suis un big novice en Js/jQuery...
Donc, voilà, j'ai pris un code d'un Slidershow que j'ai trouvé sur la toile, voilà le lien du tuto:
http://sixrevisions.com/tutorials/ja...comment-145069

J'ai essayé par la suite de le modifier afin qu'il soit possible de mettre plusieurs Sliders sur une même page. Mais mes essaies ont échoués !

1 - En essayant de changer les ids des div et adapter la fonction js pour ça...J'ai dû utiliser une variable "prefix" qui va différer entre nos Sliders dans la page HTML...
Ex:
Pour le slider 1, je prends le préfixe "s1_" ==> <div id="s1_slideshow">; <div id="s1_slidesContainer">...etc.
Pour le slider 2, "s2_" ==>div id="s2_slideshow">; <div id="s2_slidesContainer">...etc.
.
.
.
.
etc.

2- Puis en appelant une fonction slider(prefix) pour chaque préfixe.
3- ça ne marche, j'ai l'impression comme si le script s'exécute qu'une seule fois et sur le même slider en mélangeant le contenu des deux slider ( comme j'ai mis que deux sliders dans ma page)


Je mets le code initial:

$(document).ready(function(){ 
  var currentPosition = 0; 
  var slideWidth = 560; 
  var slides = $('.slide'); 
  var numberOfSlides = slides.length; 
  
  // Remove scrollbar in JS 
  $('#slidesContainer').css('overflow', 'hidden'); 
  
  // Wrap all .slides with #slideInner div 
  slides 
    .wrapAll('<div id="slideInner"></div>') 
    // Float left to display horizontally, readjust .slides width 
 .css({ 
      'float' : 'left', 
      'width' : slideWidth 
    }); 
  
  // Set #slideInner width equal to total width of all slides 
  $('#slideInner').css('width', slideWidth * numberOfSlides); 
  
  // Insert controls in the DOM 
  $('#slideshow') 
    .prepend('<span class="control" id="leftControl">Clicking moves left</span>') 
    .append('<span class="control" id="rightControl">Clicking moves right</span>'); 
  
  // Hide left arrow control on first load 
  manageControls(currentPosition); 
  
  // Create event listeners for .controls clicks 
  $('.control') 
    .bind('click', function(){ 
    // Determine new position 
 currentPosition = ($(this).attr('id')=='rightControl') ? currentPosition+1 : currentPosition-1; 
  
 // Hide / show controls 
    manageControls(currentPosition); 
    // Move slideInner using margin-left 
    $('#slideInner').animate({ 
      'marginLeft' : slideWidth*(-currentPosition) 
    }); 
  }); 
  
  // manageControls: Hides and Shows controls depending on currentPosition 
  function manageControls(position){ 
    // Hide left arrow if position is first slide 
 if(position==0){ $('#leftControl').hide() } else{ $('#leftControl').show() } 
 // Hide right arrow if position is last slide 
    if(position==numberOfSlides-1){ $('#rightControl').hide() } else{ $('#rightControl').show() } 
  }  
});


Le code HTML ( juste l'utile):
<div id="slideshow">
    <div id="slidesContainer">
      <div class="slide">
        <h2>Web Development Tutorial</h2>
        
      </div>
      <div class="slide">
        <h2>Grunge Brushes, Anyone?</h2>
        
      </div>
      <div class="slide">
        <h2>How About Some Awesome Grunge Textures?</h2>
        
      </div>
      <div class="slide">
        <h2>'Tis the End, My Friend.</h2>
        
      </div>
    </div>
  </div>


Merci pour vos réponses :)