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