从外部元素控制Flexslider。

时间:2012-08-08 06:49:35

标签: javascript jquery api flexslider

我有一个我希望从元素外部控制的Flexislider。我试过这个:

var myslider = $('.slider').flexslider({
    animation: 'slide'
});

$('button').click(function () {
    myslider.flexAnimate(3)    //Function: Move slider - (target, pause) parameters
});

但是返回TypeError: Object [object Object] has no method 'flexAnimate'

然后我偶然发现了这个线程(https://github.com/woothemes/FlexSlider/issues/125),表明这是正确的方法:

$('button').click(function () {
    myslider.flexslider(3)
});

但是我看不出如何指定动画的速度。我希望改变只对该事件立即生效。

我想我想知道如何从滑块元素外部访问文档中提到的滑块API

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

6 个答案:

答案 0 :(得分:42)

您可以像这样访问滑块对象:

var exampleSlider = $('#slider').data('flexslider');
// now you can access all the methods for example flexAnimate
exampleSlider.flexAnimate(..);

如上所述,您可以在https://github.com/woothemes/FlexSlider的API说明中找到此信息(来源:https://github.com/woothemes/FlexSlider/blob/master/jquery.flexslider.js#L674

答案 1 :(得分:14)

使用Flexslider的最新版本(2.1),你可以像这样使用外部api:

$('button').click(function () {
    $('.slider').flexslider(3);
});

API的完整详情位于https://github.com/woothemes/FlexSlider#updates

答案 2 :(得分:3)

这个对我有用:

    $('#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');
            });
        }
    });

答案 3 :(得分:2)

还没有人回答主要问题:如何在没有动画的特定幻灯片上的灯箱中启动flexslider,但稍后在幻灯片之间有动画。我已经解决了这个问题:

在打开灯箱之前(使用灯箱回调)我将flexslider的动画速度设置为0:

self.$slider.data('flexslider').vars.animationSpeed = 0;

打开灯箱后(使用灯箱回调)我更改了flexslider索引并返回动画速度的上一个值:

self.$slider.flexslider(this.index);
self.$slider.data('flexslider').vars.animationSpeed = 600; 

答案 4 :(得分:1)

您可以先尝试设置滑块对象:

$slider = $('.slideshow').flexslider();

然后使用flexslider的公共方法:

$slider.data('flexslider').pause();
$slider.data('flexslider').play();

答案 5 :(得分:0)

var myslider = ('.flexslider').flexslider({
   animation: 'slide',
   animationLoop: false
});
myslider.flexslider(3);

那对我有用。虽然我以不同的格式使用它。

var img = $('<span/>');
img.attr('onclick','myslider.flexslider('+ id + ');');

我有很多从数据库加载的幻灯片。