javascript - 为什么这些 Javascript 不一样?

标签 javascript jquery

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

function TestFunction() {
    console.log("Function called");
    $b = $("#test");
    $b.remove();
}

对比

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

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

我不理解 Javascript 语法/jQuery API 的哪一部分?我认为传递给 .on() 的处理程序参数是一个函数。我在第一个示例中向它传递了一个函数,它似乎已经调用了它,但它忽略了“点击”。

在调用函数之前,函数内部的任何内容是否都应该被忽略?

最佳答案

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

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

关于javascript - 为什么这些 Javascript 不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43883456/

相关文章:

javascript - 获取url中特定的数字字符串

javascript - 如何修复 'click me'按钮显示和隐藏某个窗口

javascript - Tab 键无法正常工作...箭头键是否兼容?

javascript - String.prototype.myFunction 不返回字符串?

php - 使用 PHP 和 Javascript 记录用户操作

javascript - 如何在 IE 上找到流氓 Ajax 请求的来源?

javascript - jQuery 页面重定向不适用于按钮单击

javascript - 当我在 css 中使用 margin auto 属性时,如何使用 javascript 获取 margin left size

jQuery SlideToggle() 问题 - 更改显示 :block to display:inline-table?

javascript - 为什么支持非js