Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么外部函数会立即执行?_Javascript_Jquery - Fatal编程技术网

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

Javascript 为什么外部函数会立即执行?,javascript,jquery,Javascript,Jquery,我的代码中有一个声明的函数。每当我点击一个项目时,我想调用这个函数。当我将它绑定到此项时,它会立即执行,并且不会触发on click事件 但是,当我在点击绑定中声明函数时,它可以正常工作 我想先在其他地方声明函数,然后在单击事件发生时调用它 function test2() { alert('test2'); } $('body').on('click', '#test1', function() { alert('test1'); }); $('body').on('click', '#

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

但是,当我在点击绑定中声明函数时,它可以正常工作

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

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

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

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

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

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

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

您正在绑定到
test2
的返回值(即
undefined
)。您只需使用
$('body')。在('click','test2',test2)上
$('body').on('click', '#test2', test2());
$('body').on('click', '#test2', test2);