Tenho certeza de que li sobre isso outro dia, mas não consigo encontrar em lugar nenhum.
Eu tenho um fadeOut()
evento após o qual removo o elemento, mas jQuery está removendo o elemento antes que ele tenha a chance de terminar o esmaecimento.
Como faço para que o jQuery espere até que o elemento desapareça e o remova?
107
Com a versão jQuery 1.6 você pode usar o
.promise()
método.fonte
promise()
ouwhen()
edone()
você pode aproveitar alguns comportamentos muito legais de métodos de terceiros ou até mesmo os seus próprios. 1 para significado.promise()
!$(selector).fadeOut('slow').promise().done(function(){...});
Você também pode
$.when()
esperar até opromise
final:Caso você esteja fazendo uma solicitação que também pode falhar, você pode até mesmo dar um passo adiante:
fonte
$.when()
não funciona porquemyEvent()
não retorna uma promessa e$.when()
espera que você cumpra uma ou mais promessas para que ele cumpra seu dever.se for algo que você deseja trocar, esmaecendo um e esmaecendo outro no mesmo lugar, você pode colocar um atributo {position: absolute} nos divs, para que ambas as animações sejam reproduzidas uma em cima da outra, e você não terá esperar que uma animação termine antes de iniciar a próxima.
fonte