Estoy seguro de que leí sobre esto el otro día, pero parece que no puedo encontrarlo en ningún lado.
Tengo un fadeOut()
evento después del cual elimino el elemento, pero jQuery está eliminando el elemento antes de que tenga la oportunidad de terminar de desvanecerse.
¿Cómo consigo que jQuery espere hasta que el elemento se haya desvanecido y luego lo elimine?
107
Con la versión jQuery 1.6 puedes usar el
.promise()
método.fuente
promise()
owhen()
ydone()
puedes aprovechar algunos comportamientos geniales de los métodos de terceros, o incluso los tuyos. +1 por significado.promise()
!$(selector).fadeOut('slow').promise().done(function(){...});
También puedes usar
$.when()
para esperar hasta quepromise
termine:En caso de que esté haciendo una solicitud que también podría fallar, puede incluso ir un paso más allá:
fuente
$.when()
no funciona porquemyEvent()
no devuelve una promesa y$.when()
espera que le pase una o más promesas para que haga su trabajo.Si es algo que desea cambiar, desvaneciendo uno y desvaneciendo otro en el mismo lugar, puede colocar un atributo {position: absolute} en los divs, de modo que ambas animaciones se reproduzcan una encima de la otra y no tenga esperar a que termine una animación antes de iniciar la siguiente.
fuente