2013-08-02 4 views
0

У меня есть div с 20 div внутри. То, что я делаю, начинается с div: eq (1) и заменяет его одним слева, а затем повторяет div: eq (2), div: eq (3) и т. Д. И заменяет их влево.Jquery animate divs eq() метод выключен

Кажется, что после этого DOM не обновляется правильно, так как они всегда отключены на 1 после этого.

Я думал, что возможно клонирование div после завершения анимации, но это не так.

Кажется, DOM не обновляет свою структуру? EDIT Извините, что изначально не предоставил код. Как вы можете видеть после первого свопа, он использует «старый» 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

И !!! где ваш связанный код? – bipen

+2

'eq' основан на нулевом значении. Я не могу сказать этого. –

+0

Можете ли вы добавить часть своего кода и скрипт js, который может воссоздать проблему? –

ответ

0

Запустите его с div:eq(0) до div:eq(19)

+0

Я не думаю, что это проблема. Я добавил демо с некоторым кодом. – james