Je suis un newb jQuery et j'ai essayé de créer un widget diaporama personnalisé pour une page que je suis en train de développer. J'ai été capable de faire fonctionner tous les bits de base (lecture automatique, pause, légendes) mais j'ai rencontré un blocage avec la pagination (vous permet de choisir la diapositive). Pour une raison quelconque, une fois que j'essaie de sélectionner une diapositive, l'image et les légendes disparaissent. Aucune erreur n'est levée, il refuse simplement de changer l'image ou la légende. Heres' le code:jQuery problème de pagination diaporama
Ce morceau de code démarre le diaporama et les contrôles qu'il
$(document).ready(function() {
var speed = 2000;
var state = 1;
$('#gallery li, #caption li').css('position','absolute');
$('#gallery li:first, #caption li:first').addClass('visible');
var timer = setInterval('autoSlideshow(-1)', speed);
$('#controls a.playpause').toggle(
function() {
$(this).css('background-image','url(images/play.png)');
clearInterval(timer);
state = 0;
return false;
},
function() {
$(this).css('background-image','url(images/pause.png)');
timer = setInterval('autoSlideshow(-1)', speed);
state = 1;
return false;
}
);
$('#controls a.pagination').click(function(){
var slide = $(this).index();
slide-=1;
clearInterval(timer);
timer = setInterval(function(){autoSlideshow(slide);}, speed);
});
$('#gallery, #caption').hover(
function() {
if(state == 1)
clearInterval(timer);
},
function() {
if (state == 1)
timer = setInterval('autoSlideshow(-1)', speed);
}
);
});
Ce bit fait la décoloration dans et hors des diapositives
function autoSlideshow(mode) {
var currentImage = $('#gallery li.visible');
var currentCaption = $('#caption li.visible');
if(mode == -1){
var nextImage = currentImage.next().length ? currentImage.next() :
currentImage.siblings(':first');
var nextCaption = currentCaption.next().length ? currentCaption.next() : //Determine the next slide
currentCaption.siblings(':first');
}
else{
var nextImage = $('#gallery li:eq(mode)'); //I'm pretty sure these two lines are the problem
var nextCaption = $('#caption li:eq(mode)'); //
}
currentImage.fadeOut(250).removeClass('visible');
nextImage.fadeIn(250).addClass('visible');
currentCaption.fadeOut(250).removeClass('visible');
nextCaption.fadeIn(250).addClass('visible');
}
Toute aide vous les gars pourriez donner serait apprécié.
Mo
Vous l'avez bourgeon. Cela fonctionne parfaitement maintenant. C'est étrange parce que le mode apparaît à l'instruction if comme un entier, donc je ne sais pas pourquoi il apparaît comme une chaîne dans le filtre: eq(). Aussi je n'ai jamais vu ce genre de syntaxe avant ... est-il possible de forcer d'autres types de données? – mrGupta
@mrGupta: voir modification ci-dessus – Hogan