为什么外部函数会立即执行

Why do external functions get executed immediately?

本文关键字:执行 外部 函数 为什么      更新时间:2023-09-26

我的代码中有一个声明的函数。每当我单击一个项目时,我都想调用这个函数。当我将其绑定到此项目时,它会立即执行,并且不会触发单击事件。

但是,当我在单击绑定中声明该函数时,它工作正常。

我想先在其他地方声明该函数,然后在单击事件发生时调用它

function test2() {
  alert('test2');
}
$('body').on('click', '#test1', function() { alert('test1'); });
$('body').on('click', '#test2', test2());

https://jsfiddle.net/ag66r950/

$('body').on('click', '#test1', function() { alert('test1'); });

这是将函数句柄作为参数传递,而不是函数结果本身

$('body').on('click', '#test2', test2());

这是将函数执行的结果作为参数传递,而不是函数本身。

您需要在事件处理程序中传递函数本身的句柄

$('body').on('click', '#test2', test2);