jQuery $.animate() несколько элементов, но обратный вызов выполняется только один раз

Если выбрать класс или коллекцию элементов для анимации с помощью jQuery:

$('.myElems').animate({....});

И затем также использовать функцию обратного вызова, то в итоге получается много лишних вызовов animate().

var i=1;
$('.myElems').animate({width:'200px'}, 200, function(){
    //do something else
    $('#someOtherElem').animate({opacity:'1'}, 300, function(){        
        if (i>1) console.log('the '+i+'-th waste of resources just finished wasting your resources');
        i++;
    });
});

Возможно, это просто плохой код и/или дизайн - но есть ли что-то, что я могу сделать, чтобы избежать множества вызовов animate(), только один из которых использует обратный вызов, и множества ненужных обратных вызовов, которые выполняются и портят мой код / ожидаемое поведение?

В идеале я бы просто мог написать один "одноразовый" обратный вызов, который будет выполняться только один раз - иначе, возможно, есть эффективный способ проверить, что что-то уже анимируется jQuery?

Пример: http://jsfiddle.net/uzSE6/ (предупреждение - это покажет множество предупреждающих окон).

40
задан totallyNotLizards 9 January 2012 в 18:24
поделиться