J'ai un Flexislider que je voudrais contrôler de l'extérieur de l'élément. J'ai essayé ceci:
var myslider = $('.slider').flexslider({
animation: 'slide'
});
$('button').click(function () {
myslider.flexAnimate(3) //Function: Move slider - (target, pause) parameters
});
Mais cela retourne TypeError: Object [object Object] has no method 'flexAnimate'
Ensuite, je suis tombé sur ce fil (https://github.com/woothemes/FlexSlider/issues/125) qui indique que c'est la bonne méthode:
$('button').click(function () {
myslider.flexslider(3)
});
Cependant, je ne vois pas comment je peux spécifier la vitesse de l'animation. Je veux que le changement soit instantané pour cet événement uniquement.
Je suppose que je me demande comment on accède à l'API du curseur comme mentionné dans la documentation depuis l'extérieur de l'élément du curseur
slider //Object: The slider element itself
slider.container //Object: The ul.slides within the slider
slider.slides //Object: The slides of the slider
slider.count //Int: The total number of slides in the slider
slider.currentSlide //Int: The slide currently being shown
slider.animatingTo //Int: Useful in .before(), the slide currently animating to
slider.animating //Boolean: is slider animating?
slider.atEnd //Boolean: is the slider at either end?
slider.manualPause //Boolean: force slider to stay paused during pauseOnHover event
slider.controlNav //Object: The slider controlNav
slider.directionNav //Object: The slider directionNav
slider.controlsContainer //Object: The controlsContainer element of the slider
slider.manualControls //Object: The manualControls element of the slider
slider.flexAnimate(target) //Function: Move slider - (target, pause) parameters
slider.pause() //Function: Pause slider slideshow interval
slider.resume() //Function: Resume slider slideshow interval
slider.canAdvance(target) //Function: returns boolean if slider can advance - (target) parameter
slider.getTarget(dir) //Function: get target given a direction - "next" or "prev" parameter
Vous pouvez accéder à l'objet curseur comme ceci:
var exampleSlider = $('#slider').data('flexslider');
// now you can access all the methods for example flexAnimate
exampleSlider.flexAnimate(..);
Comme mentionné ci-dessus, vous pouvez le trouver dans la description de l'API à l'adresse suivante: https://github.com/woothemes/FlexSlider (source: https://github.com/woothemes/FlexSlider/blob/master/ jquery.flexslider.js # L674 )
Avec la dernière version (2.1) de Flexslider, vous pouvez utiliser l’API externe comme ceci:
$('button').click(function () {
$('.slider').flexslider(3);
});
Tous les détails sur l’API sont à https://github.com/woothemes/FlexSlider#updates
Celui-ci a fonctionné pour moi:
$('#slider').flexslider({
animation: "slide",
controlNav: false,
animationLoop: false,
slideshow: false,
start: function(){
$('#sliderNext').on('click', function(e){
$('.flex-next').trigger('click');
});
$('#sliderPrev').on('click', function(e){
$('.flex-prev').trigger('click');
});
}
});
Personne n'a encore répondu à la question principale: comment démarrer flexslider dans une lightbox sur une diapositive spécifique sans animation, mais avoir ensuite une animation entre les diapositives. J'ai résolu ce problème comme ceci:
Avant d'ouvrir la lightbox (à l'aide du rappel de la lightbox), je règle la vitesse d'animation de flexslider sur 0:
self.$slider.data('flexslider').vars.animationSpeed = 0;
Après avoir ouvert la lightbox (en utilisant le rappel de la lightbox), je change l'index flexslider et renvoie la valeur précédente de la vitesse d'animation:
self.$slider.flexslider(this.index);
self.$slider.data('flexslider').vars.animationSpeed = 600;
Vous pouvez commencer par définir l’objet curseur:
$slider = $('.slideshow').flexslider();
puis utilisez les méthodes publiques de flexslider:
$slider.data('flexslider').pause();
$slider.data('flexslider').play();
var myslider = ('.flexslider').flexslider({
animation: 'slide',
animationLoop: false
});
myslider.flexslider(3);
Cela fonctionne pour moi. bien que je l'utilise dans un format différent.
var img = $('<span/>');
img.attr('onclick','myslider.flexslider('+ id + ');');
j'ai tellement de diapositives que je charge de la base de données.