2010-07-16 22 views
5

Tengo una función extendida jquery que funciona perfectamente pero cuando la paso a través de setTimout no espera el período especificado y se ejecuta inmediatamente.setTimeout no funciona con jquery

jQuery(document).ready(function($) {  
    setTimeout($.mainmenuslider({ 
    trigger:'close' 
    }),6000); 
}); 

Any Ideas ???

Respuesta

8

Eres llamar a la función justo allí cuando usted está tratando de establecer el tiempo de espera que ocurra más tarde. En su lugar:

jQuery(function($) { 
    setTimeout(function() { 
    $.mainmenuslider({trigger:'close'}); 
    }, 6000); 
}); 
15

Tiene que pasar un método anónimo para hacer lo que quiere, como esto:

jQuery(function($) {  
    setTimeout(function() { 
     $.mainmenuslider({ 
     trigger:'close' 
     }); 
    }, 6000);  
}); 

De lo contrario usted está tratando de pasar el resultado de la función (por lo que es ejecutar inmediatamente, y no ejecutar nada más tarde).

+0

salvó mi trasero justo ahora! gracias :) estaba persiguiendo una condición de carrera y no pude entender por qué no pude deshacerme de ella – Bodhi

2

¡Inténtalo!

jQuery(document).ready(function($) {  
    setTimeout("$.mainmenuslider({ 
    trigger:'close' 
    })",6000); 
}); 

durante el uso de setTimeout(), intente siempre especificar la acción que debe invocarse entre comillas.

Ex:

setTimeout("call_this_function()", 4000); 
+0

Eso no es realmente una buena idea. Mire las otras respuestas para ver ejemplos de la forma correcta de hacerlo. – Pointy

+0

4 espacios antes de una línea formatee como código. Seleccione un bloque y presione 'ctr-k' para hacer esto. –

+0

gracias por la idea de la cita (: –