Bonjour à tous,
je suis intégrateur et m'efforce de devenir bon en développement JS (et jQuery) mais ne suis encore que débutant dans ce domaine...
Via un tutoriel de Graphikart concernant la création d'un carrousel en Javascript à l'aide de jQuery, j'ai développé et ai légèrement modifié ce dernier qui fonctionne très bien !
Cependant, j'aimerais l'intégrer plusieurs fois dans une même page HTML et cela dépasse malheureusement mes compétences actuelles..
Voici ci-joint le code JS, est-ce qu'une âme charitable saurait résoudre mon problème ?
Merci d'avance.
Modifié par El_Psy_Congroo (16 Jun 2014 - 14:25)
je suis intégrateur et m'efforce de devenir bon en développement JS (et jQuery) mais ne suis encore que débutant dans ce domaine...
Via un tutoriel de Graphikart concernant la création d'un carrousel en Javascript à l'aide de jQuery, j'ai développé et ai légèrement modifié ce dernier qui fonctionne très bien !
Cependant, j'aimerais l'intégrer plusieurs fois dans une même page HTML et cela dépasse malheureusement mes compétences actuelles..
Voici ci-joint le code JS, est-ce qu'une âme charitable saurait résoudre mon problème ?
Merci d'avance.
var carrousel = {
nbSlide : 0,
nbCurrent : 1,
elemCurrent : null,
elem : null,
timer : null,
init : function(elem){
this.nbSlide = elem.find('.slide').length;
// Création de la pagination
elem.append('<ul class="navigation"></ul>');
for(var i = 1; i <= this.nbSlide; i++){
elem.find('.navigation').append('<li><a href="#">'+ i +'</a></li>');
}
elem.find('.navigation li:first').addClass('active');
// Appel de la fonction 'gotoSlide' lors d'un clique
elem.find('.navigation li a').click(function(e){
carrousel.gotoSlide($(this).text());
e.preventDefault();
});
// Création des boutons 'next' et 'prev'
var prev = '<', next = '>';
elem.append('<div class="controls"></div>');
elem.find('.controls').append('<a href="#" class="prev">'+ prev +'</a>');
elem.find('.controls').append('<a href="#" class="next">'+ next +'</a>');
elem.find('.prev').click(function(e){
carrousel.prev();
e.preventDefault();
});
elem.find('.next').click(function(e){
carrousel.next();
e.preventDefault();
});
// Affichage des contrôles par mouseOver et masquage en mouseOut
elem.find('.controls').hide();
elem.mouseover(function(){
elem.find('.controls').show();
});
elem.mouseout(function(){
elem.find('.controls').hide();
});
// Initialisation
this.elem = elem;
elem.find('.slide').hide();
elem.find('.slide:first').show();
this.elemCurrent = elem.find('.slide:first');
// On crée un timer
carrousel.play();
// Stop du défilement par mouseOver et redémarre par mouseOut
elem.mouseover(carrousel.stop);
elem.mouseout(carrousel.play);
},
gotoSlide : function(num){
// Si on clique sur le lien actif, rien ne se passe
if(num == this.nbCurrent){
return false;
}
/* Animation en fadeIn/fadeOut
-------------------------------------*/
this.elemCurrent.fadeOut();
this.elemCurrent = this.elem.find('.slide:eq('+(num-1)+')');
this.elemCurrent.fadeIn();
// On met à jour 'nbCurrent' pour le prochain clique
this.nbCurrent = num;
// Ajout de la classe 'active' sur le lien
this.elem.find('.navigation li').removeClass('active');
this.elem.find('.navigation li:eq('+(num-1)+')').addClass('active');
},
next : function(){
var num = this.nbCurrent+1;
if(num > this.nbSlide){
num = 1;
}
this.gotoSlide(num);
},
prev : function(){
var num = this.nbCurrent-1;
if(num < 1){
num = this.nbSlide;
}
this.gotoSlide(num);
},
play : function(){
window.clearInterval(carrousel.timer);
carrousel.timer = window.setInterval('carrousel.next()', 4500);
},
stop : function(){
window.clearInterval(carrousel.timer);
},
}
$(document).ready(function(){
carrousel.init($('#carrousel'));
});
Modifié par El_Psy_Congroo (16 Jun 2014 - 14:25)