Jquery animate divs eq()方法已关闭

时间:2013-08-02 07:27:50

标签: jquery

我有一个div里面有20个div。我正在做的是从div开始:eq(1)并将其与左边的一个交换然后重复div:eq(2),div:eq(3)等,然后交换到左边。

在此之后,DOM似乎没有正确更新,因为在此之后它们总是在1之后关闭。

我认为可能在动画完成后克隆div会起作用,但事实并非如此。

似乎DOM没有实时更新它的结构? 的修改 很抱歉没有最初提供代码。正如你在第一次交换后看到的那样,它使用了“旧”div。

http://jsfiddle.net/vrCUT/

$(function () {


    var currentIndex = 0;
   for (i = 0; i < 20; i++) {
            $("#holder").append('<div class="number">' + i + '</div>');
   }


    function resetDivs(){
    $("#holder div").css("border", "");
    }
    prepareForSwap();
    function prepareForSwap() {
        currentIndex++;
        resetDivs();
        div2 = $("#holder").find("div:eq(" + currentIndex + ")");
        div1 = div2.prev();

        div1.css("border", "3px solid blue");
        div2.css("border", "3px solid red");
        setTimeout(swap, 2000);

    }

    function swap() {
        div1.animate({
            left: "+=25"
        }, 2000, function () {
        });


        div2.animate({
            left: "-=25"
        }, 2000, function () {
            if(currentIndex < 20){
            setTimeout(prepareForSwap,2000);
            }
        });


   }
    );

1 个答案:

答案 0 :(得分:0)

div:eq(0)开始直到div:eq(19)