Estoy tratando de crear un efecto donde se carga la página, y después de 5 segundos, el mensaje de éxito en la pantalla se desvanece o se desliza hacia arriba.
¿Cómo puedo conseguir esto?
Construido en javascript setTimeout .
setTimeout(
function()
{
//do something special
}, 5000);
ACTUALIZACIÓN : desea esperar desde que la página ha terminado de cargarse, así que ponga ese código dentro de su $(document).ready(...);
secuencia de comandos.
ACTUALIZACIÓN 2 : jquery 1.4.0 introdujo el .delay
método. Compruébelo usted mismo . Tenga en cuenta que .delay solo funciona con las colas de efectos jQuery.
setTimeout
.Use un temporizador de JavaScript normal:
Esto esperará 5 segundos después de que el DOM esté listo. Si desea esperar hasta que la página esté realmente
loaded
necesita usar esto:EDITAR: en respuesta al comentario del OP preguntando si hay una manera de hacerlo en jQuery y no usar
setTimeout
la respuesta es no. Pero si quisieras hacerlo más "jQueryish" podrías envolverlo así:Entonces podría llamarlo así:
fuente
Me encontré con esta pregunta y pensé en proporcionar una actualización sobre este tema. jQuery (v1.5 +) incluye un
Deferred
modelo que (a pesar de no adherirse a las especificaciones Promesas / A hasta que jQuery 3) se considere generalmente como una forma más clara de abordar muchos problemas asincrónicos. Implementar un$.wait()
método usando este enfoque es particularmente legible, creo:Y así es como puedes usarlo:
Sin embargo, si después de una pausa, solo desea realizar acciones en una sola selección de jQuery, entonces debería usar el nativo de jQuery,
.delay()
que creo que también usa Deferred debajo del capó:fuente
Coloque su código dentro del
{ }
etc.
fuente
He estado usando este para una superposición de mensajes que se puede cerrar inmediatamente al hacer clic o se cierra automáticamente después de 10 segundos.
fuente
.delay()
y puede anidarseLa biblioteca Underscore también proporciona una función de "retraso":
fuente
Basado en la respuesta de Joey, se me ocurrió una solución prevista (por jQuery, leer sobre 'cola').
De alguna manera, sigue la sintaxis de jQuery.animate (): permite ser encadenado con otras funciones de fx, admite 'slow' y otras velocidades jQuery.fx. además de ser completamente jQuery. Y se manejará de la misma manera que las animaciones, si las detiene.
El campo de prueba jsFiddle con más usos (como mostrar .stop ()), se puede encontrar aquí .
El núcleo de la solución es:
todo como un complemento, que admite el uso de $ .wait () y $ (..). wait ():
Nota: dado que wait se agrega a la pila de animación, $ .css () se ejecuta de inmediato, como se supone: comportamiento esperado de jQuery.
fuente
fuente
Tenga en cuenta que esta es una vieja pregunta, pero escribí un complemento para abordar este problema que alguien podría encontrar útil.
https://github.com/madbook/jquery.wait
te permite hacer esto:
fuente