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

时间:2016-03-09 12:22:43

标签: javascript jquery

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

但是,当我在on click绑定中声明该函数时,它可以正常工作。

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

function test2() {
  alert('test2');
}

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

https://jsfiddle.net/ag66r950/

1 个答案:

答案 0 :(得分:3)

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

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

,而

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

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

你需要在事件处理程序

中传递funciton本身的句柄
$('body').on('click', '#test2', test2);