在下面的示例中,立即调用myFonk
;它不会等待click事件。为什么不呢?
function myFonk(info) {
$("#result").html(info);
}
function getText(text) {
return function () {
myFonk(text);
}
}
$(document).ready(function () {
$("#b1").click(getText("getText"));
$("#b2").click(myFonk("myFonk"));
});
答案 0 :(得分:5)
每当我们用()编写函数名时,它立即调用该函数
于是
myFonk("myFonk")
方式不正确..
以下列方式写作。
function myFonk(info) {
$("#result").html(info);
}
function getText(text) {
return function () {
myFonk(text);
}
}
$(document).ready(function () {
$("#b1").click(getText("getText"));
$("#b2").click(function () {
myFonk("myFonk")
});
});
答案 1 :(得分:1)
这是因为你没有传递对函数的引用。您正在调用函数并将结果用作click
的事件处理程序。
这将为你解决这个问题......
function myFonk(info) {
$("#result").html(info);
}
function getText(text){
return function() {
myFonk(text);
}
}
$(document).ready(function() {
$("#b1").click(function() {
getText("getText")
});
$("#b2").click(function() {
myFonk("myFonk")
});
});
答案 2 :(得分:1)
$(document).ready(function () {
$("#b1").click(getText("getText"));
});
您在这里做的是调用函数getText("getText")
并将该调用的结果传递给$("#b1").click()
。您不想传递函数的结果。你想要做的是传递函数本身。所以重写为,
$(document).ready(function () {
$("#b1").click(function() {
return getText("getText");
});
});
如果您感兴趣的功能没有参数(比方说,您想要调用函数hello()
,没有参数,您可以采用相同的方式:
$(document).ready(function () {
$("#b1").click(function() {
return hello();
});
});
......或者你可以简化它:
$(document).ready(function () {
$("#b1").click(hello);
});
注意:您正在传递hello
(函数本身),而不是hello()
(它将立即执行该函数并将结果返回给click()
函数。