0

jcarouselLITEに2つのタイマーを設定したいと思います(jcarouselではなく注意してください)。理想的には、最初の3つのスライドのタイムアウト:1000、4番目のスライドのタイムアウト:8000が必要です。次のコードは、現在のスライダーのインデックスを取得し、関数variablexに応じて変数を変更します。afterEnd

var variablex;
$('.slideshow').jCarouselLite({
    auto: true,         
    afterEnd: function(a){
        var index = $(a[0]).index(); 
        if (index == 3) {
            variablex = 8000;
        }
        else {variablex = 1000;}        
    },
    timeout: variablex;
});

jCarouselLite関数が値をチェックし続けないことに気付きました-jstimeoutを使用してループ外の変数に値を割り当てる方法はありますか?

jcarouselliteスクリプトはここにあります:github

4

2 に答える 2

0

jCarouselにはタイムアウトオプションはありません。これは自動的に同等です。次に、初期化後に作成されたjcarousel要素にアクセスできます

jQuery('#mycarousel').data('jcarousel')

これにより、現在のカルーセルのインスタンスオブジェクトが返されます。を介してオプションオブジェクトにアクセスすることで、その場でオプションを変更できるはずですjQuery('#mycarousel').data('jcarousel').options。そのため、次のようにして自動オプションを変更できます。

jQuery('#mycarousel').data('jcarousel').options.auto = 5;
于 2012-04-13T11:57:43.917 に答える
0

これは生のアイデアにすぎないため、期待どおりに機能しない可能性があります。

var slideshowTimeout = 1000;
var $slideShow = $('.slideshow');
var slideshowCount = $slideShow.find('li').length +3;
var isSlowedDown = false;

$slideShow.jCarouselLite({
    auto: true,
    timeout: slideshowTimeout,         
    afterEnd: function(a){
        var index = $(a[0]).index();
        if (index === slideshowCount && isSlowedDown === false) {
            slideshowTimeout = 4000;
            isSlowedDown = true;
            $slideShow.trigger("endCarousel")
            $slideShow.jCarouselLite({
                auto: true,
                timeout: slideshowTimeout,
                start: slideshowCount
            });
        }      
    },
});

例: http://jsfiddle.net/e2e4V/1/

于 2012-04-13T12:06:15.037 に答える