$(document).ready(function(){ function sample() { alert("This is sample function"); } $("#button").click(function(){ t = setTimeout("sample()",2000); }); });
HTML:
<input type="button" id="button" value="Call sample function with delay">
Una vez que hago clic en el botón, la función sample()
no se llama con un retraso de 2 segundos. No se lo que está mal.
¿Cómo llamar a la función JavaScript usando setTimeout()
a través de jQuery?
Dado que declara sample
dentro de la función anónima que pasa a ready
, se limita a esa función.
Luego pasa una cadena a setTimeout
que se eval
después de 2 segundos. Esto tiene lugar fuera del alcance actual, por lo que no puede encontrar la función.
Solo pase funciones a setTimeout
, usar eval es ineficiente y difícil de depurar.
setTimeout(sample,2000)
Muy fácil, solo llame a la función dentro de una cantidad específica de milisegundos usando setTimeout()
setTimeout(myFunction, 2000) function myFunction() { alert('Was called after 2 seconds'); }
O incluso puede iniciar la función dentro del tiempo de espera, así:
setTimeout(function() { alert('Was called after 2 seconds'); }, 2000)