0

bxslider で次の問題に遭遇しました。自動ショーのスライド間に異なる遅延を適用するにはどうすればよいですか?

4

3 に答える 3

2

ここで紹介する次の解決策を思いつきました。

jquery.bxslider.js で次を置き換えます。

 el.startAuto = function(preventControlUpdate){
        // if an interval already exists, disregard call
        if(slider.interval) return;
        // create an interval
        slider.interval = setInterval(function(){
            slider.settings.autoDirection == 'next' ? el.goToNextSlide() : el.goToPrevSlide();
        }, slider.settings.pause);
        // if auto controls are displayed and preventControlUpdate is not true
        if (slider.settings.autoControls && preventControlUpdate != true) updateAutoControls('stop');
    }

     /**EDITS: By CRB - techdude **/
    el.startAuto = function(preventControlUpdate){
        el.continueAuto();
    }

    el.continueAuto = function(){
        //get how long the current slide should stay
        var duration = slider.children.eq(parseInt(slider.active.index)).attr("duration");
        if(duration == ""){
            duration = slider.settings.pause;
        } else {
            duration = parseInt(duration);
        }
        console.log(duration);

        // create a timeout
        slider.timer = setTimeout(function(){
            slider.settings.autoDirection == 'next' ? el.goToNextSlide() : el.goToPrevSlide();
            el.continueAuto();
        }, duration);
        // if auto controls are displayed and preventControlUpdate is not true
        if (slider.settings.autoControls && preventControlUpdate != true) updateAutoControls('stop');

    }

    //*End Edits*/

次に、スライドの長さを変更するには、li タグに次のような duration 属性を指定します。duration は、スライドが一時停止するミリ秒数です。

デフォルトの長さを設定するには、設定で一時停止: オプションを使用するだけです。

$("element").bxSlider({
  auto:true,
  pause: 4000
};

お役に立てれば。多分 bx スライダーはそれを将来のバージョンに追加するでしょう. :)

于 2013-07-01T15:24:45.990 に答える
0

おそらく、これは明確にするのに役立ちます: 原則として、これが機能する方法は、setInterval を setTimeout で変更することで、間隔を毎回変更できるようにします。

ページで複数の要素を機能させるための鍵は、slider.timer オブジェクトを使用しないことですが、おそらく el.timer オブジェクトを使用して、行が次のようになるようにすることです。

 el.timer = setTimeout(function(){
        slider.settings.autoDirection == 'next' ? el.goToNextSlide() : el.goToPrevSlide();
        el.continueAuto();
    }, duration);

それ以外の

 slider.timer = setTimeout(function(){
        slider.settings.autoDirection == 'next' ? el.goToNextSlide() : el.goToPrevSlide();
        el.continueAuto();
    }, duration);

複数のスライダーでテストしていませんが、これが機能するかどうか教えてください. とにかくそれが原則です。ただし、これに関する唯一の問題は、el.pause メソッドを変更して el.timer も使用する必要があることです。そうしないと、スライドショーを一時停止できません。それが私が自分のやり方でそれをした理由だと思います。しかし、それはずっと前のことです。

于 2014-03-29T14:51:13.637 に答える
0

は何ですか

  • あなたはこれを拾うために使用していますか?それが機能していることの要点を提示できる方法はありますか?

  • 于 2013-09-26T02:22:03.650 に答える