2012-02-20 2 views
0

Я пытаюсь запустить следующую анимацию для набора из div элементов (скажем, 50), однако функция $.each() работает только для первого элемента массива ,Бесконечный вызов времени анимации, не работающего для элементов «все»

$.each(droplets, function(){ 
splashVanish(this); 
}); 



    function splashVanish(droplet) { 
    droplet.fadeOut(500, function(){ 
    droplet.css({'top':Math.random()*600+'px','left':Math.random()*1400+'px'}); 
    droplet.remove(); 
    $("body").append(droplet); 
      //recursive call for infinite animation time 
    droplet.fadeIn(500,function(){splashVanish(droplet)}); 
    }); 
} 

При выполнении приведенного выше кода, только в массиве fadesOut первый div, рандомизирует положение и fadesIn для бесконечной продолжительности Animatiion. К сожалению, все остальные 49 div s являются статическими и не выполняют ту же функцию.

+0

Что такое _dropplet_? Это объект jQuery? Что такое _droplets_? Коллекция объектов jQ? Массив какой-то? – elclanrs

+0

Прошу прощения, я этого не делал. Это просто элемент 'div'. – jmishra

+0

. Он сильно чувствует, что' this' - это вся коллекция в обратном вызове '$ .each', тогда как jquery doc утверждает, что это должно быть текущее значение для каждого вызова. Вы пытались перехватить точку и проверить значение «this»? – kirilloid

ответ

1

В соответствии с вашими комментариями, если droplets является коллекцией div s, вам необходимо использовать each(). $.each() итерации массивов. Попробуйте это и посмотрите, работает ли это.

droplets.each(function(){ 
    splashVanish($(this)); 
}); 
+0

О, злой. Это сработало. Большое спасибо @elclanrs – jmishra