2012-01-03 21 views
6

me gustaría utilizar el método de disparo con un retraso antes de la ejecución, trato de esta manera:Uso método de gatillo con retraso

$('#open-contact').delay(3000).trigger('click'); 

pero el código se ejecuta al instante.

¿Alguno de ustedes podría ayudarme?

muchas gracias

Respuesta

13

jQuery doc says: Método

El .delay() es el mejor para retrasar entre los efectos jQuery en cola. Debido a que es limitado, no ofrece, por ejemplo, una forma de cancelar el retraso, .delay() no reemplaza la función setTimeout nativa de JavaScript, que puede ser más apropiada para ciertos casos de uso.

lo tanto, me gustaría volver a escribir esto como

setTimeout(function() { 
    $('#open-contact').trigger('click'); 
}, 3000); 
4

De la documentación sobre el retraso jQuerys: Método

El .delay() es el mejor para retrasar entre los efectos jQuery en cola. Debido a que es limitado, no ofrece, por ejemplo, una forma de cancelar el retraso, .delay() no reemplaza la función setTimeout nativa de JavaScript, que puede ser más apropiada para ciertos casos de uso.

En otras palabras, usted debe utilizar setTimeout() en su lugar, es decir:

setTimeout(function() { $('#open-contact').trigger('click'); }, 3000); 
4

Probar:

 

$('#open-contact').delay(3000).queue(function() { 
    $(this).trigger('click'); 
});