In the example below, myFonk
is called instantly; it doesn't wait for the click event. Why not?
function myFonk(info) {
$("#result").html(info);
}
function getText(text) {
return function () {
myFonk(text);
}
}
$(document).ready(function () {
$("#b1").click(getText("getText"));
$("#b2").click(myFonk("myFonk"));
});
Whenever we write the function name with () it calls that function instantly hence
myFonk("myFonk")
is not correct way..Write in following manner.
It's because you're not passing a reference to the functions. You're calling the functions and using the results as the event handlers for
click
.This will fix that for you...
What you're doing here is calling the function
getText("getText")
and passing the result of that call to$("#b1").click()
. You don't want to pass the result of the function. What you want to do is to pass the function itself. So rewrite as,If the function you were interested in had no parameters (let's say, for example, that you wanted to call a function
hello()
, with no parameters, you could do it the same way:... or you could simplify it:
Note: you're passing
hello
(the function itself), nothello()
(which would execute the function immediately and return the result to theclick()
function.