web-dev-qa-db-ja.com

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
19
Sebastien

次のようにして、sliderオブジェクトにアクセスできます。

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

42
driechel

Flexsliderの最新(2.1)バージョンでは、次のように外部APIを利用できます。

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

APIの完全な詳細は https://github.com/woothemes/FlexSlider#updates にあります

14
atomicjeep

これは私のために働きました:

    $('#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
Joe L.

誰もまだ主な質問に答えていません:アニメーションのない特定のスライドでライトボックスでflexsliderを開始する方法ですが、後でスライド間でアニメーションを作成する方法。私はこの問題を次のように解決しました:

(ライトボックスコールバックを使用して)ライトボックスを開く前に、flexsliderのアニメーション速度を0に設定します。

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

(ライトボックスコールバックを使用して)ライトボックスを開いた後、フレックススライダーのインデックスを変更し、アニメーション速度の以前の値を返します。

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

まず、sliderオブジェクトを設定してみてください。

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

次にflexsliderのパブリックメソッドを使用します。

$slider.data('flexslider').pause();
$slider.data('flexslider').play();
1
benbyford
var myslider = ('.flexslider').flexslider({
   animation: 'slide',
   animationLoop: false
});
myslider.flexslider(3);

それは私のために働きます。別の形式で使用していますが。

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

データベースから読み込んでいるスライドがたくさんあります。