To delay JavaScript function call using jQuery

javascript, jquery

Solution

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 `eval`ed 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)

Problem

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?

Original source