是否可以在jcarousellite中动态设置超时?

时间:2012-04-13 11:37:11

标签: jquery jcarousellite

我想在jcarouselLITE中设置两个计时器(注意 - 不是jcarousel)。理想情况下,前三张幻灯片应该有超时:1000,第四张应该有超时:8000。以下代码获取当前滑块的索引,并使用variablex函数相应地更改var 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函数不会继续检查timeout的值 - 有没有办法用js为循环外的变量赋值?

可以在此处找到jcarousellite脚本:github

2 个答案:

答案 0 :(得分:0)

jCarousel中没有超时选项,它是自动等效的。然后你可以在初始化后访问创建的jcarousel元素

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

这将返回当前轮播的实例对象,您应该能够通过jQuery('#mycarousel').data('jcarousel').options访问选项对象来动态更改选项,因此您可以通过执行类似

jQuery('#mycarousel').data('jcarousel').options.auto = 5;

答案 1 :(得分: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/