为什么这个javascript函数在没有被调用的情况下运行?

时间:2010-07-02 14:57:22

标签: javascript jquery

$(document).ready(SetupButtonClicks());

function SetupButtonClicks() {
    $('#btnJavaPHP').click(DoPHPStuff());
}

function DoPHPStuff() {
    //stuff
}

我在我的javascript文件中有这个代码,当我调试它时,我看到它应该像它应该调用SetupButtonClicks()但是在完成后它会调用DoPHPStuff()。只有在点击DoPHPStuff()时才会调用btnJavaPHP。我做错了什么?

4 个答案:

答案 0 :(得分:17)

更改SetupButtonClicks功能:

$('#btnJavaPHP').click(DoHPStuff);

你编码的方式,你告诉Javascript 调用函数,而不是使用它作为“点击”处理程序。括号是运算符,可以调用函数。

答案 1 :(得分:3)

删除()

通过撰写$(document).ready(SetupButtonClicks()),您致电 SetupButtonClicks并将其返回值传递给ready
同样,通过撰写$('#btnJavaPHP').click(DoPHPStuff()),您调用 DoPHPStuff(立即)并将其返回的内容传递给click()

您需要通过撰写$(document).ready(SetupButtonClicks)$('#btnJavaPHP').click(DoPHPStuff)来传递函数。

答案 2 :(得分:3)

function DoPHPStuff() {
    //stuff
}

function SetupButtonClicks() {
    $('#btnJavaPHP').click(DoPHPStuff);
}

$(document).ready(SetupButtonClicks);    

答案 3 :(得分:2)

除了函数声明之外,函数标识符后面的一对括号会导致函数执行。例子:

// function declaration; function not executed
function SetupButtonClicks() {

}

// function executed
SetupButtonClicks();

// function not executed
SetupButtonClicks;