Quiero agregar una clase, esperar 2 segundos y agregar otra clase.función wait() o sleep() en jquery?
.addClass("load").wait(2sec).addClass("done");
¿Hay alguna manera?
Quiero agregar una clase, esperar 2 segundos y agregar otra clase.función wait() o sleep() en jquery?
.addClass("load").wait(2sec).addClass("done");
¿Hay alguna manera?
setTimeout ejecutará algún código después de un retraso de un cierto período de tiempo (medido en milisegundos). Sin embargo, una nota importante: debido a la naturaleza de Javascript, el resto del código continúa funcionando después de que el temporizador está configurado:
$('#someid').addClass("load");
setTimeout(function(){
$('#someid').addClass("done");
}, 2000);
// Any code here will execute immediately after the 'load' class is added to the element.
Hay una función, pero es extra: http://docs.jquery.com/Cookbook/wait
Este pequeño fragmento de código le permite esperar:
$.fn.wait = function(time, type) {
time = time || 1000;
type = type || "fx";
return this.queue(type, function() {
var self = this;
setTimeout(function() {
$(self).dequeue();
}, time);
});
};
Esa función solo afecta al código en la (an) cola de animación. – Pointy
Eso sería .delay()
.
Si usted está haciendo AJAX Tho cosas, que realmente debería no sólo de auto escritura "hecho" que realmente debe esperar una respuesta y ver si en realidad está hecho.
También Steven quiere '.removeClass ('load')' de lo contrario, puede agregar y cargar ambas clases, lo que probablemente no sea deseado. Si realmente está esperando que se complete una acción asincrónica, su mejor opción es hacer .addClass CUANDO se completa y tiene éxito, si no .addClass ('error') tal vez una idea –
La función de "retardo()" de Ququery en ninguna way proporciona algo parecido a una instalación de "espera" de propósito general. Es parte del sistema de animación y solo se aplica a la cola de animación. La función siempre vuelve inmediatamente, y la ejecución continúa sin pausa. – Pointy
cuenta de que esto es una vieja pregunta, pero me escribió un plugin para hacer frente a esta problema que alguien pueda encontrarle útil.
https://github.com/madbook/jquery.wait
le permite hacer esto:
$('#myElement').addClass('load').wait(2000).addClass('done');
¡Muchas gracias, loco! – Blauhirn
Usando la función setTimeout, por ejemplo Visit here for example
Se considera mejor no confiar en un enlace para la mayoría de su respuesta –
Para respaldar el comentario de @JamesJenkins, esto se debe a que los enlaces no son siempre confiables. Si una persona debe agregar un enlace, es mejor incluir también el código en su respuesta. – Tass
retardo() no va a hacer el trabajo. El problema con la demora() es que forma parte del sistema de animación y solo se aplica a las colas de animación.
¿Qué sucede si quiere esperar antes de ejecutar algo fuera de la animación?
Utilice esta:
window.setTimeout(function(){
// do whatever you want to do
}, 600);
¿Qué ocurre ?: En este escenario se espera 600 milisegundos antes de ejecutar el código especificado dentro de las llaves.
¡Esto me ayudó mucho una vez que lo descubrí y espero que te ayude también!
esta es una solución pobre en este momento porque pierde la ventaja de tener control de jquery sobre la animación, como .stop(). una solución mucho mejor es .delay() – user151496