为什么这些Javascripts不一样?

Pat*_*kSJ 0 javascript jquery

$(document).ready(function() {
    $("button").on("click", TestFunction());
});

function TestFunction() {
    console.log("Function called");
    $b = $("#test");
    $b.remove();
}
Run Code Online (Sandbox Code Playgroud)

VS

$(document).ready(function() {
    $("button").on("click", function() {
        $b = $("#test");
        $b.remove();          
    });
  });
Run Code Online (Sandbox Code Playgroud)

第一个在页面加载后立即删除按钮#test.无需单击按钮,只需将其删除即可.第二个按预期工作.按钮显示,在调用之前不会被删除.

我没有进行Javascript语法/ jQuery API的哪些部分?我认为传递给.on()的handler参数是一个函数.我在第一个例子中传递了一个函数,它似乎已经调用它,但它忽略了"点击".

在调用函数之前,函数内部不应忽略它吗?

Mμ.*_*Mμ. 5

$("button").on接受函数的第二个参数而不是函数返回值(除非,返回值是类型function).你为第二个版本而不是第一个版本做得对.因此,要在第一个版本中修复您的问题,您必须传入一个函数,如下所示:

$(document).ready(function() {
    $("button").on("click", TestFunction);
});
Run Code Online (Sandbox Code Playgroud)