Mohan Ram Mohan Ram - 7 months ago 9
Javascript Question

To delay JavaScript function call using jQuery

JavaScript:



$(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">


Once I click the button,
sample()
function is not called with a delay of 2 seconds. I don't know what's wrong.

How to call JavaScript function using
setTimeout()
via jQuery?

Answer

Since you declare sample inside the anonymous function you pass to ready, it is scoped to that function.

You then pass a string to setTimeout which is evaled after 2 seconds. This takes place outside the current scope, so it can't find the function.

Only pass functions to setTimeout, using eval is inefficient and hard to debug.

setTimeout(sample,2000)