menos detalhado maneira de eventos da cadeia de jQuery que tem que esperar por animações?

StackOverflow https://stackoverflow.com/questions/1633637

  •  06-07-2019
  •  | 
  •  

Pergunta

O encadeamento é grande em jQuery, mas cadeias o gatilho de cada evento e não esperar que o evento anterior ao fim. Isso é perceptível principalmente quando animadora.

Como tal, a solução que eu tenho visto é a utilização de funções de back chamada. O único inconveniente é se, digamos, você tem 4 coisas que você deseja animar em sucessão.

Na verdade, esta é provavelmente algo que você não quer fazer muito frequentemente, mas quando o fizer, a marcação parece ficar um pouco detalhado. Exemplo (pseudocódigo):

element.animate(fast, callBackFunction1(element1,element2,element3);

function callBackFunction1(element1,element2,element3){
    element1.animate(fast, callBackFunction2(element2,element3));
};

function callBackFunction2(element2,element3){
    element2.animate(fast, callBackFunction3(element3));
};

function callBackFunction3(element3){
    element3.animate(fast);
};

Nessa situação, é que a melhor maneira / mais sucinta de fazer as coisas?

Foi útil?

Solução

Tente o seguinte ..:)

element.animate(fast, function() {
    element1.animate(fast, function() {
        element2.animate(fast, function() {
            element3.animate(fast);
        });
    });
});

Outras dicas

var animElements = [
    element,
    element1,
    element2,
    element3,
];

function animateChain(elements) {
    if(elements.length > 0) {
        var element = elements.pop();
        element.animate("fast", function(){ animateChain(elements); });
    }
}

animateChain(animElements);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top