代码之家  ›  专栏  ›  技术社区  ›  jamone

为什么不调用这个javascript函数就运行?

  •  5
  • jamone  · 技术社区  · 14 年前
    $(document).ready(SetupButtonClicks());
    
    function SetupButtonClicks() {
        $('#btnJavaPHP').click(DoPHPStuff());
    }
    
    function DoPHPStuff() {
        //stuff
    }
    

    我的javascript文件中有这个代码,当我调试它时,我看到它调用 SetupButtonClicks() 就像应该的那样,但完成之后,它会呼叫 DoPHPStuff() . DoppScript() 只应在以下情况下调用 btnJavaPHP 点击。我做错什么了?

    4 回复  |  直到 10 年前
        1
  •  17
  •   Pointy    10 年前

    更改设置按钮单击功能:

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

    你对它编码的方式就是告诉javascript 呼叫 功能,而不是 使用 它是“单击”处理程序。括号是一个 操作人员 这会导致调用一个函数。

        2
  •  3
  •   SLaks    14 年前

    移除 () .

    通过写作 $(document).ready(SetupButtonClicks()) 你是 打电话 SetupButtonClicks 并将其返回值传递给 ready .
    同样,通过写作 $('#btnJavaPHP').click(DoPHPStuff()) 你是 打电话 DoPHPStuff (立即)并将其返回的内容传递给 click() .

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

        3
  •  3
  •   gblazex    14 年前
    function DoPHPStuff() {
        //stuff
    }
    
    function SetupButtonClicks() {
        $('#btnJavaPHP').click(DoPHPStuff);
    }
    
    $(document).ready(SetupButtonClicks);    
    
        4
  •  2
  •   Jeremy    14 年前

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

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