首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery递增地显示元素,然后反向显示。

jquery递增地显示元素,然后反向显示。
EN

Stack Overflow用户
提问于 2012-01-20 00:22:32
回答 1查看 341关注 0票数 1

我想以增量的方式显示10个元素(图像)。当第9幅图像显示时,我想再次显示它们(旋转),但这次是相反的。

所以,显示图像1,2,3,4,5,6,7,8,9,10 .

当第九站到达..。停一下,然后..。

如图9、8、7、6、5、4、3、2、1

HTML:

代码语言:javascript
复制
<div class="home-gallery">
<img class="yummy-choco" src="home_chocolate1.jpg" /> 
<img class="yummy-choco" src="home_chocolate2.jpg" /> 
<img class="yummy-choco" src="home_chocolate3.jpg" /> 
<img class="yummy-choco" src="home_chocolate4.jpg" /> 
<img class="yummy-choco" src="home_chocolate5.jpg" /> 
<img class="yummy-choco" src="home_chocolate6.jpg" /> 
<img class="yummy-choco" src="home_chocolate7.jpg" /> 
<img class="yummy-choco" src="home_chocolate8.jpg" /> 
<img class="yummy-choco" src="home_chocolate9.jpg" /> 
<img class="yummy-choco" src="home_chocolate10.jpg" />
</div>

到目前为止我所使用的Javascript / jQuery代码(无法实现反向工作):

代码语言:javascript
复制
// show first image
$('.yummy-choco').hide().eq(0).show();

var pause = 250;
var chocolates = $('.yummy-choco');
var count = chocolates.length;
var i = 0;

setTimeout(transition,pause);

function transition()
{                  
    chocolates.eq(i).fadeIn();

    if (++i >= count)
    {
        i = 0;
    }
    // if on the 10th image, show then pause
    if(i == 9) 
    {
        chocolates.eq(9).fadeIn();
        $(".home-gallery").delay(3000).show(function( ) 
        {
            // here i want to show the images in reverse
            // maybe a for loop?
            chocolates.eq(i-1).fadeOut();
            setTimeout(transition, pause); 
        });
    }
    else 
    {
        chocolates.eq(i-1).fadeOut();
        setTimeout(transition, pause); 
    }
}

你可以在这里看到一个半工作的版本: http://www.azature.com/azchocolates/

任何帮助或想法都非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-20 02:08:46

如果跟踪状态(无论是递增还是递减),则可以在转换函数中使用该状态。

你差不多有三种情况,要么你是在正常地递增,要么你是在正常地递减,或者你需要转换。在第三种情况下,我们可以从增量切换到递减(反之亦然),然后再次调用转换函数。

代码语言:javascript
复制
var delay = 1000,
    pause = 3000,
    chocolates = $(".yummy-choco"),
    count = chocolates.length,
    id = 0,
    incrementing = true;

chocolates.eq(id).show();

setTimeout(transition, delay);

function transition() {
    var fadeOutId = id,
        totalTimeout = delay;

    if (incrementing && id < count - 1) {
        id++;
    } else if (!incrementing && id > 0) {
        id--;
    } else {
        incrementing = !incrementing;
        return transition();
    }

    chocolates.eq(id).fadeIn();
    chocolates.eq(fadeOutId).fadeOut();

    if(id === 9) {
        totalTimeout += pause;
    }

    setTimeout(transition, totalTimeout);
}

http://jsfiddle.net/AWcvz/1/的完整示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8935300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档